进行异常处理时主要涉及try、catch、finally、throw和throws关键字,在使用时应该注意以下几点:
1. 不能单独使用try、catch或finally语句块,否则编译出错,例如以下代码在编译时会出错:
2.try语句块后既可以只使用catch语句块,也可以只适用finally语句块。当与catch语句块一起使用时,可以存在多个catch语句块,而对于finally语句块只能存在一个。当catch与finally同时存在时,finally必须放在catch之后。
3.Try 只与finally语句块使用时,可以使程序在发生异常后抛出异常,并继续执行方法中的其他代码。
对于上述代码,如果希望异常发生后,抛出异常并继续执行后面的代码就可以同时使用try与finally语句块。
4.try 只有catch 语句块使用时,可以使用多个catch语句块来捕获try语句块中的可能发生的多种异常。异常发生后,JAVA虚拟机会由上到下来检测当前catch语句块所捕获的是否与try语句块中发生的语句匹配,若匹配则不再执行其他的语句块。如果多个catch语句块捕获的是同种类型的异常,则捕获子类异常的catch语句块 要放在方法的前面。
下面的代码错误的放置了捕获子类与父类的catch语句块的位置,最终导致编译错误。
5.在try语句块中声明的变量,只在当前try语句块中有效,在其后的catch finally语句中块或其他位置都不能访问该变量。但在try-catch=finally语句块之外声明的变量,可以在try、catch或finally语句块中访问。
6.对于发生的检查异常,必须使用try-catch语句捕获处理,或通过throws语句向上抛出,否则编译出错。
7.在使用throws语句抛出一个异常对象时,该语句后面的代码将不会被执行,例如: