Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从try-finally块中的try块返回_Java_Try Catch_Try Catch Finally_Try Finally - Fatal编程技术网

Java 从try-finally块中的try块返回

Java 从try-finally块中的try块返回,java,try-catch,try-catch-finally,try-finally,Java,Try Catch,Try Catch Finally,Try Finally,我有两个代码段,分别是我从try返回的和have finally block。第一个代码段运行良好,也可以从finally打印,之后在第1行给出编译时错误 第一段 class abc { public static void main(String args[]) { System.out.println("1"); try { return; } catch (Exception ex) { System.out.println("Ins

我有两个代码段,分别是我从try返回的和have finally block。第一个代码段运行良好,也可以从finally打印,之后在第1行给出编译时错误

第一段

class abc {
public static void main(String args[]) {
    System.out.println("1");
    try {
        return;
    } catch (Exception ex) {
        System.out.println("Inside catch");
    } finally {
        System.out.println("2");
    }
    System.out.println("3");
}
}
第二个代码段(编译时错误)

答复:
原因是在第一个代码段中有一个执行路径,后面跟着catch块,但在第二个代码段中没有这样的路径,所以finally之后的语句是不可访问的。

第1行是不可访问的语句。因为没有可能去1号线

如果异常出现,它将在内部中断。如果不是,则从方法返回


如果catch块在那里,它确保如果try块中发生异常,它将转到第1行

lass Test11。这是因为您的代码中有writen。请检查语法。@santoshgore编辑过。在键入时留下它。那么,您的问题是什么?我想这是,如果
return
本身抛出一个
错误
@jbnize,那么会发生什么呢?我想,为什么添加
catch
块会产生一个“无法访问的语句”错误呢。
class Test11 {
public static void main(String[] args) {
    Test11 test = new Test11();
    System.out.println("1");
    try {
        return;
    } finally {
        System.out.println("2");
    }
    // COMPILER ERROR
    // System.out.println(test instanceof Test11);// line 1
}
}