繁体   English   中英

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

[英]Is there inner exception concept in java

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

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

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

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

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

outerException.initCause(innerException);

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM