鍍金池/ 教程/ Java/ Java異常處理教程
Java參數(shù)傳遞
Java靜態(tài)內(nèi)部類
Java final關鍵字
http://www.yiibai.com/java_object_oriented_design/java_inheritan
Java泛型類
Java標準注解
Java接口教程
Java注解
Java枚舉類型
http://www.yiibai.com/java_object_oriented_design/java_class_ins
Java接口實現(xiàn)
Java哈希編碼
Java泛型約束
http://www.yiibai.com/java_object_oriented_design/java_import.ht
Java注解默認值
Java異常拋出
Java不可變對象
Java類基礎
Java接口繼承
Java類方法
Java訪問級別
Java對象克隆
Java初始化塊
Java可變長度參數(shù)
Java接口字段
Java對象相等比較(Equals)
Java實例和靜態(tài)方法
Java繼承方法隱藏(覆蓋)
Java面向對象設計
Java對象finalize()方法
Java抽象類和方法
Java Object類
Java泛型方法和構造函數(shù)
Java枚舉體
Java接口方法
Java this關鍵字
Java注解類型的限制
Java main()方法
Java Enum類
Java注解用法
Java枚舉比較
Java注解類型
Java內(nèi)部類成員
Java繼承和構造函數(shù)
Java類實例化
Java內(nèi)部類類型
Java對象toString()方法
Java finally塊
Java繼承教程
Java自定義異常
Java枚舉值
Java接口作為類型
Java異常類
Java方法覆蓋教程
http://www.yiibai.com/java_object_oriented_design/java_class_bas
Java枚舉方法
Java方法重載
http://www.yiibai.com/java_object_oriented_design/java_interface
Java異常用法
Java內(nèi)部類
Java類成員訪問級別
Java異常處理教程
Java注解反射
Java構造函數(shù)(構造器)
Java導入(import語句的用法)

Java異常處理教程

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

當發(fā)生異常時,Java會創(chuàng)建一個包含有關異常的所有信息的對象,并將其傳遞給相應的異常處理代碼。有關異常的信息包括異常的類型,發(fā)生異常的代碼中的行號等。

try-catch塊

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

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

try塊以關鍵字try開頭,后面是開括號和結束括號。try塊的代碼放在開口和關閉大括號內(nèi)。try塊本身不能使用。

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

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

catch塊的聲明就像一個方法聲明。它從關鍵字catch開始,后面跟一對括號。在括號中,它聲明了一個參數(shù)。

參數(shù)類型是應該捕獲的異常類的名稱。parameterName是用戶給定的名稱。括號后面是開口括號和結束括號。異常處理代碼放在大括號中。當拋出異常時,異常對象的引用將復制到parameterName??梢允褂?code>parameterName從異常對象中獲取信息。將一個或多個catch塊與try塊關聯(lián)。
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.