1.异常体系
基类为 Throwable,Error 和 Exception 继承 Throwable,RuntimeException 和 IOException 等继承 Exception。
Error:严重错误Error,⽆法通过处理的错误,只能事先避免。
Exception:表示异常,异常产⽣后程序员可以通过代码的⽅式纠正,使程序继续运⾏,是必须要处理 的。
2.异常分类
这里的分类通指在Exception里细分,CheckException编译时异常,RuntimeException。
CheckException: 在编译时期,就会检查,如果没有处理异常,则编译失败。RuntimeException: 在运⾏时期,检查异常。在编译时期,运⾏异常不会编译器检测。
3.异常处理
分try、catch、finally、throw、throws五个内容
try{可能存在异常的代码}catch(可能的异常){捕获异常后的处理} 常常一起用,try里放可能有异常的代码,catch中捕获可能的异常;与之相对的是throws直接在方法参数和{}中间向外声明抛出,不做处理,类似public void test()throws Exception{}
finally是最终会执行的代码块,常用于一些流的关闭。finally不能单独用(有一个例外情况,当在try或者catch中调⽤退出JVM的相关⽅法时finally部分可能会不执行)
throw 抛出异常 throw new 异常类名(参数)
4.异常的注意事项
4.1运行时异常RuntimeException可以抛出不做处理,且遇到后不再向下继续执行代码,而是向外抛出异常。
如上图,Foo 类的第 7 行和C 类的第 3 行将被执行,A 类和B类的第 5 行不执行
4.2当抛出多个异常的时候 父类异常应该在子类异常后面,否则会编译报错,如下图编译报错