有關java中的try{}catch(){}的講解


版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/qq_38225558/article/details/82054100
 

try {
     可能出現異常的代碼(包括不會出現異常的代碼)
} catch (Exception e) {          //()里為接收try{}代碼塊中出現異常的類型
     如果出現異常時的處理方式
}

try-catch的執行順序:

①從 try{ } 代碼塊中第一行開始執行,執行到出現異常的代碼,jvm會創建一個異常對象
②判斷catch中聲明的異常類型是否能捕捉到jvm創建的異常對象
       i:  能捕捉到:直接跳到catch代碼塊中執行。  不會結束程序,繼續從catch代碼塊后面的代碼執行
      ii:  不能捕捉到:直接打印異常信息並結束程序
③try{} 中沒有出現任何異常,把try中的所有代碼執行完,跳過catch繼續程序

注意:

1.能被catch捕捉到的條件 ==》try中創建的異常對象的類型與catch中聲明的類型一致,或者是catch中聲明的類型的子類。

2.如果只有一個捕捉指定類型的catch 只能捕捉對應類型的異常對象。  如果try中創建了其他類型的異常,捕捉不到。Jvm來處理異常

3.try{}代碼塊中存在多行代碼會拋出異常的情況下,遇到第一個異常,后面代碼的異常 只會被catch捕捉到異常信息但都將不會被執行

4.那么我們如何才能處理try{}中的每一個異常呢??

  ① 寫多個catch : 每一個catch處理一種異常        ==>    try{ }catch(){ }catch(){ }catch(){ }
       效果:當try中出現了異常,直接跳到第一個catch處判斷,是否能捕捉。
            a:能捕捉:直接處理。  然后跳過trycatch往后執行
            b:不能捕捉:跳到下一個catch繼續判斷。如果下一個能捕捉,重復第一步的效果
            c:所有catch都不能捕捉 ==> 交給jvm處理:結束程序,在控制台打印異常信息
  ② 寫一個catch  要求:catch中的異常類型必須是try中拋出的所有異常的父類
        
    注意事項:寫多個catch時,下邊的catch聲明的異常類型不能是上邊的catch聲明的子類。
                      多個catch時,異常父類必須在下邊。   (沒有繼承關系時,就不用考慮此情況)

try{  }catch(){  }catch(){  }...finally{  }                   (catch可以有多個,也可以沒有 ==》 try{ }finally{ })

特點:寫在finally代碼塊中代碼,一定會被執行到
注意:①執行了 return    也會執行finally
           ②但 執行 System.exit(0)   就不會再執行finally了!!!

ex1: (此時 Integer in = new Integer("1");  不會出現異常的情況下)

 

ex2: (此時 Integer in = new Integer("A1");  出現異常的情況下)

 

ex3:  多個catch

 

ex4 :1個catch

 

ex5: return不影響finally{ }代碼塊中代碼的執行

 

ex6 :    執行 System.exit(0)   ==》 便不會再執行finally{ }代碼塊中代碼


————————————————
版權聲明:本文為CSDN博主「鄭清」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_38225558/article/details/82054100


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM