1

我有一个方法:

public void SomeDataMethod() throws BadDataException {
try {

// do something
} catch(IOException e) {
    throw new BadDataException("Bad data",e);
} finally {
  // do something regardless of above
}

}

现在例如一些代码将调用此方法,我想查看此方法中发生的所有失败,

那么我该如何使用 initCause()呢?或者也许还有其他方法可以做到这一点?如果我使用 initCause():

1)我会得到所有被捕获或最后一个异常吗?

2)我得到它们/它的形式是什么?**

4

2 回答 2

1

当您调用附加了 throwable 的异常构造函数时,就像您将其e作为的一部分new BadDataException("Bad data",e);一样,结果实际上与以下内容相同:

BadDataException bde = new BadDataException("Bad data");
bde.initCause(e);

这是为了保持与没有 initCause 概念的早期 Java 版本的兼容性。

并非所有异常都支持将原因添加为构造函数的一部分,对于这些异常,您可以initCause这样做。

请注意,您只能initCause出现一次异常,并且以后无法更改使用“null”对其进行初始化:

BadDataException bde = new BadDataException("Bad data", null);
// this will fail.....
bde.initCause(e);
于 2013-11-04T17:12:04.083 回答
0

要获取异常的原因,请调用getCause()... 在这种情况下,此方法将返回您包装在 BadDataException 中的 IOException。它不能返回多个异常,因为您只能包装一个异常。

于 2013-11-04T17:14:23.610 回答