1.java异常类的层次结构
2. 检查和未检查的异常之间的差异:
1)扩展Throwable类(除了RuntimeException和Error)的类称为检查异常,例如IOException,SQLException等。检查的异常在编译时检查。
2)扩展RuntimeException的类称为为检查异常,例如ArithmeticException、NullPointerException、ArrayIndexOutOfBoundsException等。未检查的异常不在编译时检查,而在运行时检查。
3)错误无法恢复。
3. java方法覆盖时的异常处理
1)如果父类没有声明异常:
子类覆盖方法不能声明checked exception,但是可以声明unchecked exception。
2)如果父类声明了异常:
子类重写方法可以声明相同的异常,或父类异常子类异常或不声明异常,但不能声明其他异常。
4.throw和throws的区别
throw:显式抛出异常,建厂异常无法通过throw传播,throw后是实例,在方法中使用,不能throw多个异常。例如:
void m(){throw new ArithmeticException("sorry");
throws:用来声明异常,可以传播检查异常,之后是类,与方法签名一起使用,可以声明多个例外情况。例如:
public void m() throws IOException,SQLException.