天天看點

Java工程師必知詞彙:異常

|名詞定義|

異常是程式中的一些錯誤,但并不是所有的錯誤都是異常,并且錯誤有時候是可以避免的。

比如說,你的代碼少了一個分号,那麼運作出來結果是提示是錯誤 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教程