1. 程式人生 > 其它 >Java異常以及異常處理的機制

Java異常以及異常處理的機制

1.Java所有異常類都是 Throwable的子類。它包括Java異常處理的兩個重要子類:Error和Exception.

Error:Error及其子類用來描述Java執行系統中的內部錯誤以及資源耗盡的錯誤,是程式無法處理的錯誤,這類錯誤比較嚴重。

Exception:可以通過捕捉處理使程式繼續執行,是程式自身可以處理的異常,也稱為非致命性異常類。根據錯誤發生原因可分為RuntimeException異常和除RunTimeException之外的異常.

簡單來說:異常與錯誤的區別是:異常可以通過程式自身捕捉處理,而錯誤是程式自身無法處理的。

執行時異常:RuntimeException類及其子類異常,如NullPointerException(空指標異常)、IndexOutOfBoundsException(下標越界異常)等,這些異常是不可查異常,程式中可以選擇捕獲處理,也可以不處理。這些異常一般是由程式邏輯錯誤引起的,程式應該從邏輯角度儘可能避免這類異常的發生。

執行時異常的特點:Java編譯器不會檢查它,也就是說,當程式中出現這類異常時,也會編譯通過。

非執行時異常 (編譯異常):是RuntimeException以外的異常,型別上都屬於Exception類及其子類。從程式語法角度講是必須進行處理的異常,如果不處理,程式就不能編譯通過。如IOException、SQLException等以及使用者自定義的Exception異常,一般情況下不自定義檢查異常。

2.異常處理機制

** 在 Java 應用程式中,異常處理機制為:丟擲異常,捕捉異常。 **

2.1丟擲異常的方法:throws和throw

throws:通常被用在宣告方法時,用來指定方法可能丟擲的異常,多個異常可使用逗號分隔。throws關鍵字將異常拋給上一級,如果不想處理該異常,可以繼續向上丟擲,但最終要有能夠處理該異常的程式碼。

throw:通常用在方法體中或者用來丟擲使用者自定義異常,並且丟擲一個異常物件。程式在執行到throw語句時立即停止,如果要捕捉throw丟擲的異常,則必須使用try-catch語句塊或者try-catch-finally語句。

3.理解try-catch-finally語句

實際上try-catch-finally語句理解很簡單,只要牢記這些規則就好了:

對於try-catch-finally語句:先執行try 塊中的程式碼,如果正常執行沒有發生異常則執行完後執行finally 程式碼塊中的程式碼;如若在try 中發生異常且被catch 捕捉到則執行catch 中的程式碼塊,然後執行finally 塊中的程式碼;

但也存在以下4種特殊情況,finally塊不會被執行:

      在前面的程式碼中使用了System.exit()退出程式;

      在finally語句塊中發生異常;

      程式所在的執行緒死亡;

      關閉CPU。