异常总结
异常的继承结构
public static void main(String[] args) { // testQuickSort(); double e = 1.0 / 0; // Runtime Exception try { Thread.sleep(2000); // 编译时异常 } catch (InterruptedException e1) { e1.printStackTrace(); } }
1.0 / 0 为Runtime Exception, 即Unchecked Exception
Thread.sleep(2000) 为Checked Exception, 即编译器可以检查到的异常
异常的处理
捕获异常--TryCatch语句的执行顺序
一段代码可以抛出多个 catch,捕获异常时顺序检查 catch语句,一旦执行一个catch语句,其他的catch语句被忽略,
基于这一原则,安排catch语句时,应该首先把子类异常放在前面,父类异常放在后面,否则,子类异常将会被忽略。
不管是否遇到异常,finally{ }语句块总要执行,遇到throw和return语句,finally语句还是会执行,但是如果遇到
System.exit(),则finally语句则不会再执行
声明异常--throws的使用规则
继承中进行方法重写时,子类中抛出的异常的范围不能超过父类
* 父类中方法没有声明异常,则子类中也不能声明异常
* 父类中声明了异常,则子类中声明的异常必须为 该类异常或该类异常的子类