java Exception分類

那麼何爲Checked Exception, 何爲Unchecked Exception。

所示

正如上圖中所示:

  • Checked Exception: 指的是不能恢復,必須要被使用者來處理的一類異常,如果不捕獲,那麼編譯會報錯。例如,IOException。
  • Unchecked Exception: 指的是在運行時纔會導致程序奔潰的異常,編譯時候並不會報錯。例如,Runtime Exception。

如果在代碼中處處來處理Checked Exception,那麼代碼就會變成冗長並且可讀性變差,所以在某些情況下需要對其進行處理,變成Unchecked Exception。

A.Checked Exception在編寫代碼時就能發現
B.Checked Exception必須要被捕獲或者拋出
C.Unchecked Exception在運行時才能發現
D.FileNotFoundException屬於Checked Exception,以上描述均正確!!

-----------

在Java中exception分爲checked exception和unchecked異常,兩者有什麼區別呢?

從表象來看,

  • checked異常就是需要在代碼中try ... catch ...的異常,編譯器在編譯代碼時會進行校驗,如果沒有對這些異常進行捕捉,就會編譯出錯。(本人理解:checked異常就是可以預料到會出現異常,爲了防止真的出現異常,代碼中必須顯式地捕捉checked異常)。

  • unchecked異常就是該類異常不是一定會出現的異常,可能是由於代碼寫的有問題(例如,數組下標越界),運行環境異常(例如,內存不足)。(本人理解:unchecked異常就是沒法預先判定的異常,因爲異常是由於代碼的編寫錯誤或者運行環境的問題,編譯器無從知曉這些異常)。

前人總結了一張簡化Java中異常類的層次結構:

  • 派生於Error或RuntimeException的異常稱爲unchecked異常
  • 剩下的異常就是checked異常(注意,上圖中就剩下IO異常,其實是不準確的)

國外有人總結了一張更爲全面的異常層次結構圖:

------------

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章