Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類引用

Java 有用資源

Java try-catch 塊



一個異常(或異常事件)是在程式執行期間出現的錯誤。當發生異常時,程式的正常流程會被中斷,程式/應用程式會異常終止,這是不推薦的,因此,這些異常需要被處理。

Java trycatch

一個方法使用trycatch 關鍵字的組合來捕獲異常。trycatch 塊放置在可能產生異常的程式碼周圍。trycatch 塊內的程式碼稱為受保護程式碼,使用 try/catch 的語法如下所示:

try

容易發生異常的程式碼放在try塊中。當發生異常時,該異常由與其關聯的catch塊處理。每個 try 塊都應該緊跟一個catch塊或finally塊。

catch

catch 語句包含宣告您嘗試捕獲的異常型別。如果受保護程式碼中發生異常,則檢查 try 後面的 catch 塊(或塊)。如果發生的異常型別在 catch 塊中列出,則異常會被傳遞到 catch 塊,就像引數傳遞到方法引數一樣。

Java try 和 catch 塊的語法

try {
   // Protected code
} catch (ExceptionName e1) {
   // Catch block
}

Java try 和 catch 塊的示例

在下面的示例中,聲明瞭一個包含 2 個元素的陣列。然後程式碼嘗試訪問陣列的第 3 個元素,這將引發異常。由於我們已將程式碼用 try 塊括起來,因此可以在我們宣告的用於捕獲 ArrayIndexOutOfBoundsException 的下一個 catch 塊中處理此異常。捕獲異常後,我們可以採取相應的操作。這裡我們列印丟擲的異常的詳細資訊。

package com.tutorialspoint;

public class ExcepTest {

   public static void main(String args[]) {
      try {
         int a[] = new int[2];
         System.out.println("Access element three :" + a[3]);
      } catch (ArrayIndexOutOfBoundsException e) {
         System.out.println("Exception thrown  :" + e);
      }
      System.out.println("Out of the block");
   }
}

輸出

Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3
Out of the block

使用 Java try 的多個 catch 塊

一個 try 塊可以後跟多個 catch 塊。多個 catch 塊的語法如下所示:

語法:多個 catch 塊

try {
   // Protected code
} catch (ExceptionType1 e1) {
   // Catch block
} catch (ExceptionType2 e2) {
   // Catch block
} catch (ExceptionType3 e3) {
   // Catch block
}

之前的語句演示了三個catch塊,但你可以在單個try塊之後使用任意數量的catch塊。如果受保護的程式碼中發生異常,則該異常將被拋到列表中的第一個catch塊。如果丟擲的異常的資料型別與ExceptionType1匹配,則它將在那裡被捕獲。如果不匹配,則異常將傳遞到第二個catch語句。此過程將持續下去,直到異常被捕獲或穿過所有catch塊,在這種情況下,當前方法將停止執行,並將異常拋到呼叫堆疊上的前一個方法。

示例:多個Catch塊

這是一個程式碼段,展示瞭如何使用多個try/catch語句。在這個例子中,我們透過將值除以0來建立錯誤。因為它不是ArrayIndexOutOfBoundsException,所以下一個catch塊處理異常並列印詳細資訊。

package com.tutorialspoint;

public class ExcepTest {

   public static void main(String args[]) {
      try {
         int a[] = new int[2];
         int b = 0;
         int c = 1/b;
         System.out.println("Access element three :" + a[3]);
      }
      catch (ArrayIndexOutOfBoundsException e) {
         System.out.println("ArrayIndexOutOfBoundsException thrown  :" + e);
      }catch (Exception e) {
          System.out.println("Exception thrown  :" + e);
      }
      System.out.println("Out of the block");
   }
}

輸出

Exception thrown  :java.lang.ArithmeticException: / by zero
Out of the block

使用Java Try和Catch塊捕獲多個異常

從Java 7開始,你可以使用單個catch塊處理多個異常,此功能簡化了程式碼。以下是操作方法:

語法:捕獲多個異常

catch (IOException|FileNotFoundException ex) {
   logger.log(ex);
   throw ex;

示例:捕獲多個異常

這是一個程式碼段,展示瞭如何在單個語句中使用多個catch。在這個例子中,我們透過將值除以0來建立錯誤。在一個語句中,我們處理ArrayIndexOutOfBoundsException和ArithmeticException。

package com.tutorialspoint;

public class ExcepTest {

   public static void main(String args[]) {
      try {
         int a[] = new int[2];
         int b = 0;
         int c = 1/b;
         System.out.println("Access element three :" + a[3]);
      }
      catch (ArrayIndexOutOfBoundsException | ArithmeticException e) {
         System.out.println("Exception thrown  :" + e);
      }
      System.out.println("Out of the block");
   }
}

輸出

Exception thrown  :java.lang.ArithmeticException: / by zero
Out of the block
廣告