1. 程序中处理异常的办法:如果当前方法有能力自己解决异常,就在当前方法中通过try-catch语句捕获并处理异常;如果当前方法没能力自己解决异常,就在方法的声明处通过throws语句声明抛出异常。
2. java虚拟机处理异常的流程:当java虚拟机在执行方法的过程中遇到异常,java虚拟机必须找到能捕获该异常的catch代码块。它首先察看当前方法是否存在这样的catch代码块,如果存在,就执行该catch代码块;否则,java虚拟机会从方法调用栈中弹出该方法的栈结构,继续到前一个方法中查找何时的catch代码块。如果找到何时的catch代码块,就执行该代码块,否则整个应用程序被终止。
3. try、catch、finally、throw、throws关键字的用途:(1)try-catch语句:捕获异常。(2)finally语句:任何情况下必须执行的代码。(3)throws子句:声明可能会出现的异常。(4)throw语句:抛出异常。
4. 异常处理语句的语法规则:(1)try代码块后面至少有一个catch代码块或finally代码块。(2)try代码块后面可以有零个或多个catch代码块,还可以有零个或至多一个finally代码块。(3)当try代码块后面有多个catch代码块,java虚拟机会把实际抛出的异常对象依次和各个catch代码块声明的异常类型匹配,如果异常对象为某个异常类型或子类的实例,就执行这个catch代码块,不会执行其他的catch代码块。
5. 运行时异常:RuntimeException类及其子类都称为运行时异常,这种异常的特点是java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。
6. 受检查异常:除了RuntimeException及其子类以外,其他的Exception类及其子类都属于受检查异常。如果一个方法可能出现受检查异常,要么用try-catch语句捕获,要么用throws子句声明将它抛出,否则会导致编译错误。