Java異常處理教學

異常是在沒有定義正常執行路徑時在Java程式的執行期間可能出現的條件。Java通過將執行操作的代碼與處理錯誤的代碼分離來處理錯誤。

當發生異常時,Java會創建一個包含有關異常的所有資訊的對象,並將其傳遞給相應的異常處理代碼。有關異常的資訊包括異常的類型,發生異常的代碼中的行號等。

try-catch塊

要處理異常,請將代碼放在try塊中。 try塊如下所示:

try  {
    // Code for the try block
    // 可能有異常的代碼
}

try塊以關鍵字try開頭,後面是開括弧和結束括弧。try塊的代碼放在開口和關閉大括弧內。try塊本身不能使用。

它必須後跟一個或多個catch塊,或一個finally塊,或兩者的組合。要處理可能在try塊中拋出的異常,請使用catch塊。一個catch塊可以用於處理多種類型的異常。catch塊的語法與方法的語法相似。

catch (ExceptionClassName parameterName)   {
    // Exception handling  code
}

catch塊的聲明就像一個方法聲明。它從關鍵字catch開始,後面跟一對括弧。在括弧中,它聲明了一個參數。

參數類型是應該捕獲的異常類的名稱。parameterName是用戶給定的名稱。括弧後面是開口括弧和結束括弧。異常處理代碼放在大括弧中。當拋出異常時,異常對象的引用將複製到parameterName。可以使用parameterName從異常對象中獲取資訊。將一個或多個catch塊與try塊關聯。
try-catch塊的一般語法如下。

try  {
    // Your code  that may throw  an  exception
}
catch  (ExceptionClass1 e1){
    // Handle  exception of  ExceptionClass1 type
}
catch  (ExceptionClass2 e2){
    // Handle  exception of  ExceptionClass2 type
}
catch  (ExceptionClass3 e3){
    // Handle  exception of  ExceptionClass3 type
}

示例

下麵的代碼顯示了如何處理除零異常。

public class Main {
  public static void main(String[] args) {
    int x = 10, y = 0, z;
    try {
      z = x / y;
      System.out.println("z = " + z);
    } catch (ArithmeticException e) {
      String msg = e.getMessage();
      e.printStackTrace();
      System.out.println("The error is: " + msg);
    }

    System.out.println("The end.");
  }
}

上面的代碼生成以下結果。

java.lang.ArithmeticException: / by zero
    at Main.main(Main.java:5)
The error is: / by zero
The end.

上一篇: Java泛型方法和構造函數 下一篇: Java異常拋出