在Java中,根據錯誤性質將運行錯誤分為兩類:錯誤和異常。
在Java程序的執行過程中,如果出現了異常事件,就會生成一個異常對象。生成的異常對象將傳遞Java運行時系統,這一異常的產生和提交過程稱為拋棄(throw)異常。
當Java運行時系統得到一個異常對象時,它將會沿着方法的調用棧逐層回溯,尋找處理這一異常的代碼。找到能夠處理這類異常的方法后,運行時系統把當前異常對象交給這個方法進行處理,這一過程稱為捕獲(catch)異常。
Java中的所有異常都是由Throwable類的子類生成的對象,所有的異常類都是Throwable類的子類或子類的子類。Throwable類是Object類的直接子類,Error類和Exception類是Throwable類的兩個直接子類。
1.Error類
Error類包括一些嚴重的程序不能處理的系統錯誤類,如內存溢出、虛擬機錯誤、棧溢出等。這類錯誤一般與硬件有關,與程序本身無關,通常由系統進行處理,程序本身無法捕獲和處理。
Error類的常見子類如圖1所示。
圖1 Error類的常見子類
2.Exception類
有些異常在編寫程序時無法預料的,如中斷異常、非法存取異常等。為了保證程序的健壯性,Java要求必須對這些可能出現的異常進行捕獲,並對其進行處理。
Exception類的常見子類如圖2所示。
圖2 Exception類的常見子類
3.RuntimeException類
RuntimeException類是Exception類的子類。RuntimeException類的常見的子類如圖3所示。
圖3 RuntimeException類的常見的子類