java中是否存在内部异常概念

use*_*949 20 java exception

.Net的异常可以包含内部异常吗?我想知道Java是否有类似的东西?

Jon*_*eet 26

绝对 - 您可以使用检索内部异常("原因")Throwable.getCause().要使用cause创建异常,只需将其传递给构造函数即可.(大多数异常都有一个构造函数接受一个原因,它有意义.)


Dón*_*nal 8

您可以通过两种方式设置内部异常(AKA是原因).如果您自己实例化异常,请将内部异常传递给(外部)异常的构造函数,例如

try {
    // some code that throws innerException
} catch (Exception innerException) {
    throw new OuterException(innerException);
}
Run Code Online (Sandbox Code Playgroud)

另一方面,如果外部异常没有允许您设置内部异常的构造函数,或者您没有自己实例化外部异常,则可以使用

outerException.initCause(innerException);
Run Code Online (Sandbox Code Playgroud)


Mic*_*rdt 5

从Java 1.4开始,java.lang.Throwable具有将另一个Throwable作为参数的构造函数和一个getCause()返回它的方法.几乎所有标准API中的异常以及其他库中实现的大多数异常都使用此工具.