Java异常处理与多线程编程
1. 链式异常
从JDK 1.4开始,异常子系统引入了链式异常特性。链式异常允许将一个异常与另一个异常关联起来,第二个异常用于描述第一个异常的原因。
例如,一个方法可能因为尝试除以零而抛出 ArithmeticException
,但实际问题的原因是发生了I/O错误,导致除数设置不当。虽然该方法肯定要抛出 ArithmeticException
,但也希望调用代码知道根本原因是I/O错误,链式异常就能处理这种情况。
为支持链式异常, Throwable
类添加了两个构造函数和两个方法:
- 构造函数 :
- Throwable(Throwable causeExc)
: causeExc
是导致当前异常的异常,即异常发生的根本原因。
- Throwable(String msg, Throwable causeExc)
:在指定原因异常的同时,还能指定异常描述。
这两个构造函数也被添加到了 Error
、 Exception
和 RuntimeException
类中。
- 方法 :
| 方法 | 说明 |
| — | — |
| Throwable getCause()
| 返回当前异常的根本原因异常