java 異常分類

記錄java異常

java異常結構圖

鼠標移動到該類名處, 直接按快捷鍵ctrl + t
說明:
此快捷鍵是查看到有這個同名方法的父類、子類、接口。

java異常分爲"檢查"和"非檢查"兩類,"檢查"二字的意思是,代碼編譯時,編譯器會去Check一下有沒有進行異常處理(捕獲或向上拋),對於歸類爲需要檢查的異常,若沒處理,編譯就過不去。
初學的時候,常常想爲啥異常要這樣分類處理? 後來明白了些,異常不過兩種:主觀和客觀,一個大多數情況下可以避免,一個大多數情況下無法避免。
像NullPointerException這類異常,大多跟程序員素質掛鉤(開發好,測試好, 基本不會在系統運行後蹦出來), 基本是可以避免的,java語法當初把它們對類爲‘非檢查異常',也算給程序員和編譯器省了不少事;
而像IOException這類跟外在環境有關的異常,幾乎是不可避免的(指不定哪一天那一秒網絡就掛了),但是當不期而遇時,程序還是要有所作爲,所以編譯器有必要督促一下程序員,Check一下,看看是是否對這些可能不期而至的異常進行了處理。當Exception對象傳遞到某個節點後,程序就可以執行一些措施了,比如:給用戶返回一個提示("系統繁忙,請重試"),給監控平臺推送一個異常消息等等。

常見的RuntimeException(非檢查類型的異常)有

算術異常類:ArithmeticExecption 例如除數爲0。
空指針異常類:NullPointerException
類型強制轉換異常:ClassCastException
數組下標越界異常:ArrayIndexOutOfBoundsException
類型轉換異常: Java.lang.ClassCastException

檢查類型的異常必須捕獲,常見的檢查類型的異常例如

java.io.IOException
java.sql.SQLException


關於java的Exception的getMessage()是否爲null?
SQLException和IOException的getMessage不爲null,而runtime異常卻爲空。

發佈了217 篇原創文章 · 獲贊 39 · 訪問量 54萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章