我有一个方法:
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)我得到什么形式/它?**
答案 0 :(得分:0)
当您使用附加的throwable调用Excepion构造函数时,就像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);
答案 1 :(得分:0)
要获得异常原因,请致电... getCause()
。在这种情况下,此方法将返回您在BadDataException中包装的IOException。它不能返回多一个异常,因为你只能包装一个异常。