📅  最后修改于: 2020-04-05 07:21:55             🧑  作者: Mango
链接的异常允许将一个异常与另一个异常相关联,即,一个异常描述了另一个异常的原因。例如,考虑一种情况,其中一种方法由于尝试除以零而引发ArithmeticException,但实际的异常原因是导致除数为零的I / O错误。该方法仅将ArithmeticException抛出给调用方。因此,调用者不会知道异常的实际原因。链式异常用于此类情况。
构造函数的Throwable类支持链接Java异常:
Throwable类的方法,这些方法在Java中支持链式异常:
使用链式异常的示例:
// Java程序展示链式异常
public class ExceptionHandling
{
public static void main(String[] args)
{
try
{
// 创建异常
NumberFormatException ex =
new NumberFormatException("异常");
// Setting a cause of the exception
ex.initCause(new NullPointerException(
"异常产生的实际原因"));
// 抛出异常.
throw ex;
}
catch(NumberFormatException ex)
{
// 展示异常
System.out.println(ex);
// 获取实际异常的原因
System.out.println(ex.getCause());
}
}
}
输出:
java.lang.NumberFormatException: 异常
java.lang.NullPointerException: 异常产生的实际原因