1.1 Error和Exception 区别
Throwable:
|——Error:错误,一般情况下不便携针对性的代码进行处理,需要对程序代码进行修正。
属于编译时的错误,编译不通过就不会有相应的class文件
|——Exception:异常,可以有针对性代码进行处理。
1.2 throw和throws的区别
throw:是在函数内抛出异常对象,当抛出的异常不是RuntimeException子类时,需要在函数名上throws。
throws:是在函数上抛出异常类,可以抛出多个异常类,类与类之间用逗号隔开。
ps:无论是throw,还是throws 都是希望调用者去处理异常的。
1.3 编译时被检查的异常和运行时的异常区别
1、编译时被检查的异常:只要是Exception及其子类都是编译时被检测的异常。
编译时的异常必须在函数内抛出,在函数上声明,否则编译失败
声明的原因是需要调用者去处理。
2、运行时的异常:其中Exception有一个特殊的子类RuntimeException,他和它的子类是运行时异常,是编译时不被检测的。
运行时的异常在函数内抛出,不需要再函数名上声明,
不声明的原因是:不需要调用者处理,运行时异常发生了,程序就停止了,调用者必须对代码进行修改。
1.4 对于异常什么时候try,什么时候throws呢?
功能内部出现异常,内部可以处理,就用try。如果功能内部处理不了,就必须throws声明出来,让调用者处理。
1.5 子类对父类异常的操作
1、当子类覆盖父类的方法时,父类的方法抛出异常,那么子类的方法要么try要么抛出此异常和改异常的子类,不能抛出其他异常。
2、如果父类抛出了多个异常,那么子类在覆盖时只能抛出父类异常的子集。
3、如果父类或者接口中没有抛出异常,那么子类不可以抛出异常,此时出现了异常只能try。如果try解决不了,就可以throw抛出RuntimeException异常或其子类。
|
|