1. 程式人生 > >檢查異常和非檢查異常

檢查異常和非檢查異常

在講檢查異常(checked exception)和非檢查異常(unchecked exception)之前,我們通過一張圖來簡單瞭解一下JAVA的異常結構圖。(圖片來自loren-Yang的CSDN部落格)。
在這裡插入圖片描述
java中的異常和錯誤都繼承自java.lang.Throwable。

這個類有兩個直接的子類Error和Exception。

  • Error錯誤:JVM內部的嚴重問題。無法恢復。程式人員不用處理。
  • Exception異常:普通的問題。通過合理的處理,程式還可以回到正常執行流程。要求程式設計人員要進行處理。

非檢異常指的是java.lang.RuntimeException和java.lang.Error類及其子類,所有其他的異常類都稱為檢查異常。兩種型別的異常在作用上並沒有差別,唯一的差別就在於使用檢查異常時的合法性要在編譯時刻由編譯器來檢查。正因為如此,檢查異常在使用的時候需要比非檢查異常更多的程式碼來避免編譯錯誤。

對未檢查的異常(unchecked exception )的幾種處理方式:

  1. 捕獲
  2. 繼續丟擲
  3. 不處理

對檢查的異常(checked exception,除了RuntimeException,其他的異常都是checked exception )的幾種處理方式:

  1. 繼續丟擲,消極的方法,一直可以拋到java虛擬機器來處理
  2. 用try…catch捕獲

幾點注意事項:

1.對於檢查的異常必須處理,或者必須捕獲或者必須丟擲
2. 異常都是發生在程式的執行期,編譯出現的問題叫語法錯誤。
3. 當程式再執行過程中出現了異常,JVM自動建立一個該型別的異常物件。同時把這個異常物件交給執行時系統。(丟擲異常)


4. 異常都是發生在程式的執行期,編譯出現的問題叫語法錯誤。
5. 異常處理的兩種方式。1.捕獲並處理:在異常的程式碼附近顯式用try/catch進行處理(不合理),執行時系統捕獲後會查詢相應的catch處理塊,再catch處理塊中對該異常進行處理。2. 檢視發生異常的方法是否有向上宣告異常,有向上宣告,向上級查詢處理語句,如果沒有向上宣告,JVM中斷程式的執行並處理。用throws向外宣告(合理的處理方法)