练习使用try catch语句和throw与 throws,因此按照慕课的课程写了一个模拟图书查询系统。定义一个了一个选择错误异常和找不到图书异常
具体代码如下
选择异常
public class ChooseException extends RuntimeException{ //继承运行时异常
public ChooseException() {
}
public ChooseException(String message) {
super(message);
}
}
找不到图书异常
public class Non_existent extends Exception{
public Non_existent() {
}
public Non_existent(String message) {
super(message);
}
}
之后在main方法中尝试直接throw抛出,编译不通过,因为main方法后没加throw,于是在测试类中定义test1()与test2()用来抛出两个异常
public void test1() throws ChooseException{
throw new ChooseException("选择错误");
}
public void test2() throws Non_existent{
throw new Non_existent("找不到图书");
}
在main函数中创建测试类对象,
SimulationLibrary sl = new SimulationLibrary();
在输入时使用java自带的异常对象InputMismatchException来判断是否出现类型不对的,同时创建了多个布尔变量用来控制报错时的循环,并将其放在finally语句中,发现错误,无论是否报错,fianlly都执行,遂删除finally,放在catch语句中。
之后就好办了,只用复制到第二种情况当中,比较字符串时出现异常,
if(choose3 == Book[compare2][1])
就是比较不成功,后来发现是用的变量的引用去对比的,自然是不会成功,于是调用了java的equals方法,成功了。
项目结束
此中经验,熟悉了try catch finnaly语句的用法,和throw与throws的用法,知道了java字符串的比较方法,在demo中还出现了一个死循环的现象,在输入时出的错,重新声明了另一个Scanner对象,解决了,具体原因以后可能会遇见。