多個嵌套的try…catch…finally

請先閱讀 EmbedeFinally.java示例,再運行它,觀察其輸出並進行總結java

源代碼:spa

public class EmbededFinally {  對象

public static void main(String args[]) {      blog

int result;       資源

try {          get

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

  try {               class

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語句。

相關文章
相關標籤/搜索