Java異常處理機制

讓蛋蛋飛發表於2018-08-04

什麼是異常處理機制:


異常處理機制:

讓程式發生異常時,按照程式碼預先設定的異常處理邏輯,針對性地處理異常,讓程式盡最大可能恢復正常。

Java異常處理機制:

Java程式中產生異常(函式中語句執行引發/手動throw丟擲),用一個對應型別的異常物件來封裝異常,JRE就會試圖尋找異常處理程式來處理異常。

Java異常分類:


Java異常型別的頂層父類為Throwable類,派生出Error類和Exception類。

**錯誤:**Error類以及他的子類的例項,代表了JVM本身的錯誤,錯誤不能通過程式碼處理。

**異常:**Exception以及他的子類,代表程式執行時傳送的各種不期望發生的事件,可以被Java異常處理機制使用,是異常處理的核心。

Java異常處理機制

根據Javac對異常的處理要求,將異常分為兩類:非檢查異常和檢查異常

1.非檢查異常:Error和RuntimeException以及他們的子類。

javac在編譯時,不會提示和發現這樣的異常,不要求程式去處理這些異常。 這樣的異常,我們寫程式碼時可以處理(使用try-catch-finally),也可以不處理。

這樣的異常,多半是程式碼寫的有問題,應該去修正程式碼,而不是通過異常處理器去處理。

例如:

除0異常:ArithmeticException

強制型別轉換異常:ClassCastException

陣列越界異常:ArrayIndexOutOfBoundsException

空指標異常:NullPointerException

2.檢查異常:除Error和RuntimeException的其它異常。

javac強制要求為這樣的異常做預處理工作:使用try-catch語句捕獲並處理,或使用throws丟擲,否則編譯不會通過。

這樣的異常一般是由程式的執行環境導致的,如SQLException,IOException,ClassNotFoundException等。

異常處理的基本語法:


1.try-catch-finally語句塊

注意:

<1>try、catch和finally中的區域性變數之間不共享。

<2>發生異常,執行跳轉到最近的匹配異常處理catch程式碼去執行,異常處理完後,接著catch程式碼塊後面繼續執行(終結式異常處理模式)

2.在方法宣告時使用throws丟擲交給方法呼叫者去執行,或手動throw顯式丟擲一個異常。

異常鏈化:


**異常鏈化:**以一個異常物件為引數構造新的異常物件。新的異常物件將包含先前的異常的資訊。 使用一個帶有Throwable引數的構造方法實現,這個當作引數的異常為根源異常(case)。

例如:Throwable欄位cause,儲存了構造時傳遞的根源異常引數。這種設計和連結串列設計類似,因此形成了異常鏈化。

Java異常處理機制

相關文章