首先要瞭解錯誤會被包裝為物件,這些物件都是可拋出的,因此可拋出的物件都繼承自java.lang.Throwable類別,並可使用try、catch進行捕捉,Throwable定義了取得訊息、堆疊追蹤等方法,它有兩個子類別:java.lang.Error與java.lang.Exception。
Error與其子類別實例代表嚴重系統錯誤,例如硬體層面錯誤、JVM錯誤或記憶體不足等問題。雖然也可以使用try、catch來處理Error物件,但並不建議,發生嚴重系統錯誤時,Java應用程式本身是無力回復的。舉例來說,Error物件拋出時,基本上不用處理,任其傳播至JVM為止,或者是最多留下日誌訊息,供開發者除錯時作為修正程式時的線索。
如果拋出了Throwable物件,而程式中沒有任何catch捕捉到物件,最後由JVM捕捉到的話,那JVM基本處理就是顯示錯誤物件包裹之訊息並中斷程式。
程式設計本身的錯誤,建議使用Exception或其子類別實例來表現,單就語法與繼承架構上來說,如果某個方法宣告會拋出Throwable、Exception或子類別實例,但又不屬於Error或java.lang.RuntimeException或其子類別實例,你就必須明確使用try、catch語法加以處理,或者用throws宣告這個方法會拋出例外,否則會編譯失敗。