0

我有 5 个方法,例如 1、2、3、4、5。我从方法 1 调用方法 2,从方法 2 调用方法 3,依此类推。假设 Method5 中发生异常,我在 try-catch 块中处理它,我如何在 Method1 中知道呢?

4

4 回答 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 回答