我有 5 个方法,例如 1、2、3、4、5。我从方法 1 调用方法 2,从方法 2 调用方法 3,依此类推。假设 Method5 中发生异常,我在 try-catch 块中处理它,我如何在 Method1 中知道呢?
问问题
583 次
4 回答
3
您可能想研究异常传播。这个另一个问题很好地描述了它。本质上,如果异常不在 try-catch 中,它将冒泡到被调用者,直到它位于调用堆栈的顶部或被捕获。
于 2012-05-09T04:15:38.713 回答
1
您必须设置 method1 和 method5 都可以访问的变量/标志。像同一类中的字段之类的东西应该可以工作。
private String exceptionHappened = "";
private void method1() {
method(2);
// Here I can check value of exceptionHappened
}
//... methods 2-4
private void method5() {
try {
// ...
} catch (Exception e) {
this.exceptionHappened = "In method 5";
}
}
于 2012-05-09T04:18:01.260 回答
0
如果没有捕获到异常,则会在调用层次结构中传播,直到到达 main 方法。如果一个方法想知道调用层次结构中是否有任何异常,那么它应该try-catch
阻止以控制异常流。
于 2012-05-09T04:18:17.937 回答
0
创建一个用户定义的异常并在该类中有一个属性来存储方法名称。现在在你的情况下,在 method5 中,在 catch 块中抛出用户定义的异常,你通过将方法名称设置为“methodname”属性来创建该异常。将异常抛出到 fir method1(或任何根方法),然后根据 methodname 属性中的值,您可以确认抛出异常的方法。
于 2012-05-09T05:22:28.433 回答