Java異常處理機制及自定義異常
我們總是試圖避免在軟件程序中錯誤的發(fā)生,但是百分之百沒有錯誤的程序是不存在的。無論怎樣,如果我們能適當?shù)奶幚礤e誤,將會極大的改善程序的可讀性、可靠性以及可維護性。Java編程語言使用異常來處理錯誤。
我們總是試圖避免在軟件程序中錯誤的發(fā)生,但是百分之百沒有錯誤的程序是不存在的。無論怎樣,如果我們能適當?shù)奶幚礤e誤,將會極大的改善程序的可讀性、可靠性以及可維護性。Java編程語言使用異常來處理錯誤。
異常處理程序的基本形式如下:
method() throws ExceptionType1, ExceptionType2, …{
try {
// 程序塊
} catch (ExceptionType1 e) {
// 對ExceptionType1的處理
} catch (ExceptionType2 e) {
// 對ExceptionType2的處理,處理了一部分,throw(e); 再拋出這個“異?!苯o上層的調(diào)用者
} finally {
// 總是要執(zhí)行的語句
}
}
異常對象
每個異常都是一個對象,它是Throwable類或其它子類的實例。當一個方法出現(xiàn)異常后便拋出一個異常對象,該對象中包含有異常信息,調(diào)用這個對象的方法可以捕獲到這個異常并進行處理。Throwable類有兩個標準子類:錯誤類()和異常類()。
異常類的繼承關(guān)系
在實際的程序開發(fā)中,異常無處不在,并且種類繁多。區(qū)分什么情況下會出現(xiàn)什么樣的異常是十分必要的。異??梢愿鶕?jù)發(fā)生的原因進行分類,以及編譯時對異常的檢查情況,分為可檢測異常和不可檢測異常兩種。
異常捕獲
Java的異常處理是通過try、catch、throw、throws和finally這5個關(guān)鍵詞來實現(xiàn)的。通過在代碼中使用try選定監(jiān)控異常的范圍,然后使用catch捕獲異常,最終可以對異常進行處理。若在try塊中拋出的異常沒有被捕獲,Java將退出當前方法并向上層調(diào)用者傳遞異常。
創(chuàng)建自定義異常
有時候Java類庫中提供的異常處理類無法滿足特定需求,需要自定義異常。創(chuàng)建自定義異常非常簡單,只需要定義一個繼承自Exception的新類即可。例如,如果需要提示水位過高的異常,可以創(chuàng)建一個自定義異常類,如下所示:
class MyException extends Exception {
private int i;
MyException(int a) {
i a;
}
public String toString() {
return "水位過高";
}
}
通過自定義異常,可以更靈活地處理程序中出現(xiàn)的特殊情況,提高程序的可維護性和擴展性。