我有5种方法,例如1,2,3,4,5。我从方法1调用方法2,从方法2调用方法3,依此类推。假设在Method5中发生异常并且我在try-catch块中处理它,我将如何在Method1中知道这一点?
答案 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属性中的值,可以确认抛出异常的方法。