Throwable類是Java語言中所有錯誤和異常的超類。只有作為此類(或其子類之一)的實例的對象才被Java虛擬機拋出,或者可以被Java throw語句拋出。類似地,只有這個類或其子類之一可以是catch子句中的參數類型。出於編譯時檢查異常的目的,Throwable和Throwable的任何子類(也不是RuntimeException或Error的子類)都被視為已檢查的異常。
Error是Throwable的子類,表示合理的應用程序不應該嘗試捕獲的嚴重問題。大多數此類錯誤都是異常情況。ThreadDeath錯誤,雖然是“正常”條件,但也是Error的子類,因為大多數應用程序不應該嘗試捕獲它。
Exception類及其子類是Throwable的一種形式,它表示合理的應用程序可能想要捕獲的條件。類Exception和任何不是RuntimeException子類的子類都是經過檢查的異常。如果方法或構造函數的throws子句可以通過執行方法或構造函數拋出並在方法或構造函數邊界外傳播,則需要在方法或構造函數的throws子句中聲明已檢查的異常。
RuntimeException是在Java虛擬機的正常操作期間可以拋出的那些異常的超類。RuntimeException及其子類是未經檢查的異常。如果方法或構造函數的throws子句可以通過執行方法或構造函數拋出並在方法或構造函數邊界外傳播,則不需要在方法或構造函數的throws子句中聲明未經檢查的異常