一、 什麼是異常:
a) 異常是程序執行期間發生的各種意外或不正常的事件,它會中斷正在運行的程序。
雖說對某些異常JVM已做出處理,但應用程序中還會有很多JVM不能預知的情況,那麼這些異常就需用應用程序來編碼處理了。
二、 處理異常的語法:
public void method(){
try {
// 代碼段(此處是會產生異常的代碼)
//2
} catch (異常類型 ex) {
// 對異常進行處理的代碼段
} finally{
//這裏的代碼始終都會被執行
}
// 其它代碼
}
a) catch異常處理塊可以不是必須的,可以省略如: try{ ….. } finally{ …… }
三、 try、catch、finally、throw、throws
a) try代碼塊用以包含可能出現異常的代碼。
b) catch塊捕獲try代碼塊中產生的異常。
c) finally塊跟在catch或try之後用於確保無論是否發生異常都需執行的代碼。
d) throw用在方法或構造函數裏,用於手動(編碼)引發一個異常。如:
public void method(){
throw new IllegalArgumentException(“參數不合法”);
}
e) thows用在方法或構造函數的定義上,說明方法或構造函數會產生哪些異常,多個異常用逗號分隔。如下指示方法method可產生算術異常和非法參數異常:
public void method(…) throws ArithmeticException, IllegalArgumentException {
//方法聲明已經可拋出兩個異常,那麼方法體內產生這兩個異常的代碼就可以不需要try-catch處理。
}
四、 java.lang.Exception是所有異常的父類
五、 Throwable 類具有兩個子類,它們是:
a) Exception異常、例外:合理的用戶程序應當捕獲處理的異常情況。
b) Error錯誤:用於指示合理的應用程序不應該試圖捕獲的嚴重問題。如JVM進程內部錯誤、系統級的錯誤,這些不是合理的應用程序應處理的。
六、 常見異常類:
七、 多重catch塊:
如果出現多重catch塊時,catch塊的先後順序有規定,異常的子類(越具體的異常)放在最前面的catch塊來處理,異常的父類放在最後面處理,Exception放在最後面處理。
八、 異常的分類:
a) 檢查異常
(受控異常):這類異常一定要在代碼裏必須用try-[catch]-[finally]來處理
。Exceptionn屬於檢查型異常。
b) 非檢查異常
(即運行時異常也叫不受控異常,RuntimeException或RuntimeException的子類都屬於這類異常,如被0除、NullPointerExceptiont,數組下標越界等操作就會出現這類異常,這類異常JVM會自動處理不強制的要求在用戶代碼裏用try-catch處理)。常見的運行時異常有如下:
九、 throw
關鍵字:
a) 用在方法體內或者是構造函數內手動向外(調用方)拋出一個異常。
b) 語法:
throw new 異常類(); 或throw ex; //ex爲異常對象
十、 throws
關鍵字:
a) 在聲明方法或者構造函數頭時聲明可以拋出哪些類型的異常。
b) 語法:
public void method() throws 異常類型1, 異常類型2…n { }
十一、 自定義異常:
a) 異常是類(可把它看成一種特殊的類),所可用異常表示一種業務問題的類型,那麼自定義異常可以更加明確具體的知道應用出現了何種問題,使開發人員更容易的定位應用程序產生問題的具體原因和位置。
b) 語法:
public class MyException extends Exception{
//構造函數
//重寫父類的方法
}