多个嵌套的try…catch…finally

请先阅读 EmbedeFinally.java示例,再运行它,观察其输出并进行总结

源代码:

public class EmbededFinally {  

public static void main(String args[]) {      

int result;       

try {          

System.out.println("in Level 1");       

  try {               

System.out.println("in Level 2");

  // result=100/0;  //Level 2               

  try {                

  System.out.println("in Level 3");                  

  result=100/0;  //Level 3                

}              

catch (Exception e) {                   

System.out.println("Level 3:" + e.getClass().toString());               

}                                

finally {            

System.out.println("In Level 3 finally");              

}                        

// result=100/0;  //Level 2            

}          

catch (Exception e) {             

  System.out.println("Level 2:" + e.getClass().toString());          

  }

  finally {        

System.out.println("In Level 2 finally");        

 }       

// result = 100 / 0;  //level 1      

}       

catch (Exception e) {         

System.out.println("Level 1:" + e.getClass().toString());       

}

finally {           

  System.out.println("In Level 1 finally");       

}   

}

}

解锁的方法写在finally{}中无论上面是否有异常都会执行这里面的代码

 

 

public class EmbededFinally {   

public static void main(String args[]) {      

int result;      

try {

            

System.out.println("in Level 1");           

  try {              

System.out.println("in Level 2");

              result=100/0;  //Level 2           

  try {             

  System.out.println("in Level 3");                   

  result=100/0;  //Level 3              

     }              

catch (Exception e) {                    

System.out.println("Level 3:" + e.getClass().toString());              

}                            

finally {                  

System.out.println("In Level 3 finally");               

}                               

 result=100/0;  //Level 2           

}          

catch (Exception e) {             

  System.out.println("Level 2:" + e.getClass().toString());         

  }

  finally {                

System.out.println("In Level 2 finally");          

 }           

 result = 100 / 0;  //level 1        

}        

catch (Exception e) {           

System.out.println("Level 1:" + e.getClass().toString());        

}      

finally {          

  System.out.println("In Level 1 finally");      

}   

}

}

总结:Java通过使用trycatchfinally语句来捕获一个或多个异常,catch语句可以有一个或多个,而且至少要一个catch语句或finally。如果某处发生异常,则try语句中此处之后的代码都不会被执行,如:

Try{ 

String s=”abc”;

int i=Integer.parseInt(s);

int a=i+10;

}

当程序运行时,异常发生,则try语句抛出异常对象,a=i+10;此语句位于异常发生处之后,不会被执行。

  Finally语句用法:由于当异常发生时,已经分配的资源会保持原来的状态,不能被释放,所以finally语句主要用来释放和清理有关的资源或善后工作,如关闭打开的文件等。Finally语句是一个统一的出口,即无论try语句中是否发生异常,也无论catch语句的的异常类型与try语句抛出的异常的类型是否匹配,finally语句中的代码都要被执行。Finally语句不是必需的,若在某些场合中不需要释放资源,那么trycatch语句中可以没有finally语句。

posted on 2015-11-14 14:12  覃兽兽  阅读(1331)  评论(0编辑  收藏  举报