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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM