外部方法如何知道内部方法中发生异常

时间:2012-05-09 04:13:41

标签: java

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

4 个答案:

答案 0 :(得分:3)

您可能希望了解异常传播。另一个question描述得相当好。从本质上讲,如果异常不在try-catch中,它将冒泡到被调用者,直到它位于调用堆栈的顶部或被捕获。

答案 1 :(得分: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";
    }
}

答案 2 :(得分:0)

异常(如果未捕获)在调用层次结构中传播,直到到达main方法。如果一个方法想要知道调用层次结构中是否有任何异常,那么它应该try-catch阻塞来控制异常流。

答案 3 :(得分:0)

创建用户定义的异常并在该类中具有存储方法名称的属性。现在你的情况,  在method5中,在catch块中抛出用户定义的异常,通过将方法名称设置为“methodname”属性来创建该异常。将该异常抛出到fir method1(或根本方法),然后根据methodname属性中的值,可以确认抛出异常的方法。