Java 可以从方法返回到let吗
有三种方法:f1、f2和f3。我想从f3返回f1 假设: 最初f1调用f2 f2调用f3Java 可以从方法返回到let吗,java,exception,methods,return,Java,Exception,Methods,Return,有三种方法:f1、f2和f3。我想从f3返回f1 假设: 最初f1调用f2 f2调用f3 这三个函数都应该使用Try-catch块 这种情况是,如果我在f3中得到一个异常,那么我应该能够返回f1 谢谢 catch(Exception e) { return; } 您可以在f2中捕获异常并添加return,这样它将转到f1。或者只是不在f2中捕获异常(只在f2中添加抛出),让它传播到f1 您可以在f2中捕获异常并添加return,这样它将转到f1。或者干脆不在f2中捕获异常(只在f2中添加抛出
这三个函数都应该使用Try-catch块 这种情况是,如果我在f3中得到一个异常,那么我应该能够返回f1 谢谢
catch(Exception e) {
return;
}
您可以在f2中捕获异常并添加return,这样它将转到f1。或者只是不在f2中捕获异常(只在f2中添加抛出),让它传播到f1
您可以在f2中捕获异常并添加return,这样它将转到f1。或者干脆不在f2中捕获异常(只在f2中添加抛出),让它传播到f1。试试看
void f1(){
try{
f2();
}catch(Exception er){}
system.out.println("Exception...");
}
void f2() throws Exception{
f3();
}
void f3() throws Exception{
//on some condition
throw new Exception("something failed");
}
试试
试一试
试一试
检查一下这样的东西
void f1() throws Exception {
try {
f2();
} catch (Exception e) {
throw new Exception("Exception Ocuured");
}
}
void f2() throws Exception {
try {
f3();
} catch (Exception e) {
throw new Exception("Exception Ocuured");
}
}
void f3() throws Exception {
try {
// Do Some work here
} catch (Exception e) {
f1();
}
}
检查一下这样的东西
void f1() throws Exception {
try {
f2();
} catch (Exception e) {
throw new Exception("Exception Ocuured");
}
}
void f2() throws Exception {
try {
f3();
} catch (Exception e) {
throw new Exception("Exception Ocuured");
}
}
void f3() throws Exception {
try {
// Do Some work here
} catch (Exception e) {
f1();
}
}
Try/finally是你的朋友。如果我在f3中使用Try catch,如果我在f3中使用return。然后返回到f2。我想要的是,在没有任何条件检查的情况下,它应该能够返回f1。您应该实现一些状态标志来确定何时从f2返回f1,但这确实需要条件检查。@极端命令我试图避免使用状态标志,因为与f3处于同一级别的函数数量很多。Try/finally是您的朋友。如果我在f3中使用Try catch,如果我在f3的catch中使用return,则返回。然后返回到f2。我想要的是,在没有任何条件检查的情况下,它应该能够返回f1。您应该实现一些状态标志来确定何时从f2返回f1,但这确实需要条件检查。@extremecorders我试图避免使用状态标志,因为与f3处于同一级别的函数数量很多。我已经编辑了这个问题,请查看一下。谢谢。我已经编辑了这个问题,请看一下。谢谢。所有不需要的功能都应该使用Try catch块。在f2中,您将记录错误并返回f2。然后,f1 gets EXECUTETRY catch块的其余部分应在所有不需要的函数中使用。在f2中,您将记录错误并返回f2。然后执行f1的其余部分调用f3()的catch块中的f1()从一开始执行f1中的语句。执行后返回到f3,f3返回到f2,在我们调用f3的语句之后的f2中的语句将被执行,然后返回到f1。这不是我需要的行为。谢谢。在f3()的catch块中调用f1()会从头开始执行f1中的语句。执行后返回到f3,f3返回到f2,在我们调用f3的语句之后的f2中的语句将被执行,然后返回到f1。这不是我需要的行为。谢谢