Java 中丟擲多個異常

Mohd Ebad Naqvi 2023年10月12日 Java Java Exception
Java 中丟擲多個異常

本教程將演示如何在 Java 中丟擲多個異常。

異常是在程式執行期間破壞指令正常流程的不需要的和意外的事件。所有 Java 異常的根類都是 java.lang.Throwable。此類由 Error 和異常子類繼承。

為了處理異常,我們使用 try...catch 塊。

try 塊中,我們放置了可能引發一些異常的程式碼。try 塊不是單獨使用的。它必須始終跟在 catchfinally 之後。catch 塊用於捕獲異常。這個塊可以跟在 finally 塊之後。finally 塊用於執行程式的重要程式碼,無論是否有異常。

在 Java 中,我們可能要處理多個異常。在 Java 中不可能丟擲大量異常。我們可以指定多個異常,但只會丟擲其中一個。

但是,我們有一些替代方法可以用來模擬丟擲多個異常。

我們可以使用鏈式異常來處理多個異常。此類異常表明引發的異常是由另一個異常引起的。

例如,

public class Main {
  public static void main(String[] args) {
    try {
      NumberFormatException ex = new NumberFormatException("NumberFormatException is thrown");
      ex.initCause(new NullPointerException("NullPointerException is the main cause"));
      throw ex;
    }

    catch (NumberFormatException ex) {
      System.out.println(ex);
      System.out.println(ex.getCause());
    }
  }
}

輸出:

java.lang.NumberFormatException: NumberFormatException is raised
java.lang.NullPointerException: NullPointerException is the main cause

請注意 initCause()getCause() 方法的使用。initCause() 函式將異常的原因設定為另一個異常,而 getCause() 將返回異常的原因,在我們的例子中是 NullPointerException

我們也可以使用抑制異常。在這裡,我們將抑制的異常附加到主要異常。它是在 Java 7 中新增的。

為了附加被抑制的異常,我們使用 addSuppressed() 函式。我們將此函式與主要異常物件一起使用。

例如,

import java.io.*;
class Main {
  public static void main(String[] args) throws Exception {
    try {
      Exception suppressed = new NumberFormatException();
      Exception suppressed2 = new NullPointerException();

      final Exception exe = new Exception();

      exe.addSuppressed(suppressed);
      exe.addSuppressed(suppressed2);
      throw exe;

    }

    catch (Throwable e) {
      Throwable[] suppExe = e.getSuppressed();
      System.out.println("Suppressed:");
      for (int i = 0; i < suppExe.length; i++) {
        System.out.println(suppExe[i]);
      }
    }
  }
}

輸出:

Suppressed:
java.lang.NumberFormatException
java.lang.NullPointerException

在上面的示例中,我們將兩個異常附加到主物件並列印了被抑制的異常。為了獲得所有被抑制的異常,我們使用 getSuppressed() 函式。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe

相關文章 - Java Exception