Java程序設計基礎之異常處理
|
早期的編程語言(比如C語言)沒有異常處理,通常是遇到錯誤返回一個特殊的值或設定一個標志,并以此判斷是不是有錯誤產生。隨著系統規模的不斷擴大,這種錯誤處理已經成為創建大型可維護程序的障礙了。于是在一些語言中出現了異常處理機制,比如在Basic中的異常處理語句“on error goto”,而Java則在C++基礎上建立了新的異常處理機制。
Java通過面向對象的方法進行異常處理,把各種不同的異常進行分類,并提供了良好的接口。這種機制為復雜程序提供了強有力的控制方式。同時這些異常代碼與“常規”代碼分離,增強了程序的可讀性,編寫程序時也顯得更靈活。
異常處理還有一個好處是在你不能確定和處理異常時,你可以不處理,而把問題提交上去。另一方面,異常處理機制使得錯誤處理代碼更有條理,更便于維護。下面,我們看看在Java中如何處理異常。
Java中的異常類
在Java中,每個異常都是一個對象,它是Throwable類或其它子類的實例。當一個方法出現異常后便拋出一個異常對象,該對象中包含有異常信息,調用這個對象的方法可以捕獲到這個異常并進行處理。
Throwable類有兩個標準子類:java.lang.Error和java.lang.Exception即錯誤和異常。錯誤Error類一般是指虛擬機相關的問題,如系統崩潰、虛擬機出錯誤、動態鏈接失敗等,這一類錯誤無法恢復或不可能捕獲,將導致應用程序中斷。異常Exception類則是指一些可以被捕獲且可能恢復的異常情況,如數組下標越界ArrayIndexOutOfBoundsExcepton、數字被零除產生異常ArithmeticException、輸入/輸出異常IOException等。
提示:Java編譯器要求Java程序必須捕獲或聲明所有非運行時的異常,如:FileNotFoundException、IOException等。因為,對于這類異常來說,如果程序不進行處理,可能會帶來意想不到的結果。但運行時出現異常可以不做處理,因為這類異常很普遍,全部處理可能對程序的可讀性和運行效率產生影響。
Java異常處理形式
Java的異常處理是通過5個關鍵詞來實現的:try、catch、throw、throws和finally。一般情況下是用try來執行一段程序,如果出現異常,系統會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最后(finally)由缺省處理器來處理。
下面是Java異常處理程序的基本形式:
try //執行時程序塊 catch ExceptionType1e //對ExceptionType1的處理 catch ExceptionType2e //對ExceptionType2的處理 throw e //再拋出這個“異常” finally |