标签:
所有的异常都是由Throwable继承而来,在下一层立即分解为两个分支,Error和Exception。
Java异常处理方法有:抛出异常,捕捉异常。主要依赖于try、catch、finally、throw、throws五个关键字。
try:它里面放置可能引发异常的代码
catch:后面对应异常类型和一个代码块,用于表明该catch块用于处理这种类型的代码块,可以有多个catch块。
finally:主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件),异常机制总是保证finally块总是被执行。只有finally块执行完成之后,才会回来执行try或者catch块中的return或throw语句,如果finally中使用了return或者 throw等终止方法的语句,则就不会跳回执行,直接停止。
throw:用于抛出一个实际的异常,可以单独作为语句使用,抛出一个具体的异常对象。
1 import java.io.IOException; 2 3 public class Test { 4 5 public static void main(String[] args) { 6 System.out.println("returning result is " + testException()); 7 } 8 9 public static int testException(){ 10 int i = 1 ; 11 try{ 12 throw new IOException() ; 13 }catch(Exception e){ 14 System.out.println("catch it !"); 15 return i; 16 }finally{ 17 i = 2 ; 18 System.out.println("finally ok") ; 19 System.out.println("i = " + i) ; 20 //return i ; 21 } 22 } 23 }
当第20行的return语句注释掉时,输出的结果是
catch it !
finally ok
i = 2
returning result is 1 同时也表明如果try 或 catch 中有return语句,则在进入finally之前,Java的中间缓存变量机制已经将try 或 catch 中返回的结果进行了缓存,执行完finally中的语句后,直接将缓存结果return,而当finally中有return语句时,则直接return当前的结果即可。
当第20行的return语句没有注释掉时,输出的结果是
catch it !
finally ok
i = 2
returning result is 2
标签:
原文地址:http://www.cnblogs.com/mukekeheart/p/5634187.html