Java 可以从方法返回到let吗

Java 可以从方法返回到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中添加抛出

有三种方法: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中添加抛出),让它传播到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。这不是我需要的行为。谢谢