📜  Java中的链式异常

📅  最后修改于: 2022-05-13 01:55:07.952000             🧑  作者: Mango

Java中的链式异常

链式异常允许将一个异常与另一个异常联系起来,即一个异常描述另一个异常的原因。例如,考虑一种情况,其中方法由于尝试除以零而引发 ArithmeticException,但异常的实际原因是导致除数为零的 I/O 错误。该方法将只向调用者抛出 ArithmeticException。所以调用者不会知道异常的实际原因。在这种情况下使用链式异常。


在Java中支持链式异常的 Throwable 类的构造函数

  1. Throwable(Throwable cause) :- 其中 cause 是导致当前异常的异常。
  2. Throwable(String msg, Throwable cause) :- msg 是异常消息,cause 是导致当前异常的异常。

在Java中支持链式异常的 Throwable 类的方法

  1. getCause() 方法:- 此方法返回异常的实际原因。
  2. initCause(Throwable Cause) 方法:- 此方法设置调用异常的原因。

使用链式异常的示例:

// Java program to demonstrate working of chained exceptions
public class ExceptionHandling
{
    public static void main(String[] args)
    {
        try
        {
            // Creating an exception
            NumberFormatException ex =
                       new NumberFormatException("Exception");
  
            // Setting a cause of the exception
            ex.initCause(new NullPointerException(
                      "This is actual cause of the exception"));
  
            // Throwing an exception with cause.
            throw ex;
        }
  
        catch(NumberFormatException ex)
        {
            // displaying the exception
            System.out.println(ex);
  
            // Getting the actual cause of the exception
            System.out.println(ex.getCause());
        }
    }
}

输出:

java.lang.NumberFormatException: Exception
java.lang.NullPointerException: This is actual cause of the exception