exception 和 error都是繼承了 throwable類,在java中只有 throwable類型的實例纔可以被拋出 throw活着 捕獲 catch,它是異常處理機制的基本組成類型,
exception和error 體現了java平臺設計者對不同異常情況的分類, exceptin是程序正常運行中,可以預料的意外情況, 可能並且應該被捕獲,進行相應處理的。
error是指在正常情況下,不大可能出現的情況,絕大部分的 error都會導致程序 比如jvm自身 ,處於非正常的、 不可恢復狀態。 既然是非正常情況,所以不便於也不需要捕獲,常見的比如outofmemerorerror之類, 都是error的子類。
exception又分爲可檢查( checked)異常和不檢查( unchecked)異常, 可檢測異常在源代碼必須顯示的進行捕獲處理,這是編譯器檢查的一部分,前面我介紹的不可查的error,是thrwowable不是exception。
不檢查異常就是所謂的運行時異常,類似nullpointerexception, arrayindexoutofboundsexction之類,通常是可以編碼避免的邏輯錯誤,具體根據需要來判斷是否需要捕獲,並不會在編譯器強制要求。