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

时间:2011-03-09 11:05:59

标签: java exception

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

4 个答案:

答案 0 :(得分:24)

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

答案 1 :(得分:7)

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

try {
    // some code that throws innerException
} catch (Exception innerException) {
    throw new OuterException(innerException);
}

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

进行设置。
outerException.initCause(innerException);

答案 2 :(得分:5)

从Java 1.4开始,java.lang.Throwable具有将另一个Throwable作为参数的构造函数,以及一个返回它的getCause()方法。几乎所有标准API中的例外情况以及其他库中实现的大部分例外都使用了此功能。

答案 3 :(得分:1)

所有异常都可以用Java链接。这意味着您可以抛出异常并提供另一个异常(实际上是Throwable)作为您抛出的异常的原因。查看javadoc for Exception