我有一个无法修改的 API,它基本上执行以下操作:
public void CatchException() {
try {
some code...
} catch (Throwable t) {
System.out.println(t.toString());
}
}
我在我的方法中调用此 API:
public void myMethod() {
try {
someClass.CatchException();
} catch (Throwable t) {
... exception is not recaught
}
}
在对 API 的调用中,异常不会被第二次捕获,因为它是在 API 方法中消耗的...这是预期的 Java 行为...
有没有办法让我在无法修改API代码的情况下检测到API方法中抛出了异常?
最佳答案
方法必须要么处理异常,要么不处理异常;但是,这与它是否处理异常或执行某种异常相关的工作关系不大。
下面是一个方法示例,该方法知道异常,但决定将它们委托(delegate)给上层调用堆栈来处理。
public void doSomething() throws Exception {
try {
some code...
} catch (Exception t) {
System.out.println(t.toString());
throw t;
}
}
public void doAndHandle() {
try {
doSomething();
} catch (Exception t) {
System.out.println(t.toString());
}
}
请注意,我可以在引发异常后执行处理(就像我在 doSomething()
中所做的那样,但我不能既抛出异常又不抛出异常。处理异常是一个有意识的决定,不抛出异常)抛出它。处理异常可能无法完全处理它(如 doSomething()
中所示)
关于java - 在Java中,有没有办法重新捕获或列出以前捕获的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32532130/