|名詞定義|
異常是程式中的一些錯誤,但并不是所有的錯誤都是異常,并且錯誤有時候是可以避免的。
比如說,你的代碼少了一個分号,那麼運作出來結果是提示是錯誤 java.lang.Error;如果你用System.out.println(11/0),那麼你是因為你用0做了除數,會抛出 java.lang.ArithmeticException 的異常。
異常發生的原因有很多,通常包含以下幾大類:
- 使用者輸入了非法資料。
- 要打開的檔案不存在。
- 網絡通信時連接配接中斷,或者JVM記憶體溢出。
這些異常有的是因為使用者錯誤引起,有的是程式錯誤引起的,還有其它一些是因為實體錯誤引起的。
要了解Java異常處理是如何工作的,你需要掌握以下三種類型的異常:
- 檢查性異常:最具代表的檢查性異常是使用者錯誤或問題引起的異常,這是程式員無法預見的。例如要打開一個不存在檔案時,一個異常就發生了,這些異常在編譯時不能被簡單地忽略。
- 運作時異常: 運作時異常是可能被程式員避免的異常。與檢查性異常相反,運作時異常可以在編譯時被忽略。
- 錯誤: 錯誤不是異常,而是脫離程式員控制的問題。錯誤在代碼中通常被忽略。例如,當棧溢出時,一個錯誤就發生了,它們在編譯也檢查不到的。
|特點|
在Java之中如果要進行異常的處理,可以使用:try、catch、finally這幾個關鍵字來完成,其基本的處理結構如下:
try{
//可能出現異常的語句
}[catch(異常類型 異常對象){
//異常處理
}catch(異常類型 異常對象){
//異常處理
}catch(異常類型 異常對象){
//異常處理
}.....] [finally {
不管異常是否處理都要執行 ;
}]
在此之中可以使用的組合為:try…catch、try…catch…finally、try…finally。
throws/throw 關鍵字:
如果一個方法沒有捕獲到一個檢查性異常,那麼該方法必須使用 throws 關鍵字來聲明。throws 關鍵字放在方法簽名的尾部。
也可以使用 throw 關鍵字抛出一個異常,無論它是新執行個體化的還是剛捕獲到的。
- throw:是在代碼塊中使用的,主要是手工進行異常對象的抛出;
- throws是在方法定義上使用的,表示将此方法中可能産生的異常明确告訴給調用處,由調用處進行處理。
自定義異常的兩種實作方案:繼承Exception,或者繼承RuntimeException。
|參考資料|
[1] 阿裡雲大學Java視訊課程
[2] Java開發者
[3] Java教程