Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類參考

Java 有用資源

Java - catch 關鍵字



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

異常可能由於多種原因發生。以下是一些發生異常的場景。

  • 使用者輸入了無效資料。

  • 需要開啟的檔案找不到。

  • 通訊過程中網路連線丟失或 JVM 記憶體不足。

其中一些異常是由使用者錯誤引起的,另一些是由程式設計師錯誤引起的,還有一些是由某種方式發生故障的物理資源引起的。

捕獲異常

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

語法

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

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

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

示例

在下面的示例中,聲明瞭一個包含 2 個元素的陣列。然後,程式碼嘗試訪問陣列的第 3 個元素,這會引發異常。

// File Name : ExcepTest.java
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

多個 Catch 塊

try 塊後面可以跟多個 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,在這種情況下,當前方法停止執行,並且異常被拋到呼叫棧上的前一個方法。

示例

以下程式碼段顯示瞭如何使用多個 try/catch 語句。

try {
   file = new FileInputStream(fileName);
   x = (byte) file.read();
} catch (IOException i) {
   i.printStackTrace();
   return -1;
} catch (FileNotFoundException f) // Not valid! {
   f.printStackTrace();
   return -1;
}

示例

在下面的示例中,聲明瞭一個包含 2 個元素的陣列。然後程式碼嘗試訪問陣列的第 3 個元素,這將丟擲一個異常。我們定義了多個 catch 塊來處理不同型別的異常。

// File Name : ExcepTest.java
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);
      }catch(Exception 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 7 開始,您可以使用單個 catch 塊處理多個異常,此功能簡化了程式碼。以下是如何操作:

catch (IOException|FileNotFoundException ex) {
   logger.log(ex);
   throw ex;
java_basic_syntax.htm
廣告

© . All rights reserved.