在try finally块中从try块返回

时间:2017-03-01 07:40:13

标签: java try-catch try-catch-finally try-finally

我有两个代码片段,我从try返回并且最终也是块。第一个工作正常,最后也打印出来,后来在标记为line1的行上给出了编译时错误。

第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");
}
}

第二个片段(编译时错误)

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
}
}

答案: 原因是在第一个片段中有一个执行路径,后面跟着catch块,但在第二个片段中没有这样的路径,所以在最终无法访问后声明。

1 个答案:

答案 0 :(得分:1)

第1行是无法访问的语句。因为没有可能去第1行。

如果Exception trows它将在try内部中断。如果没有从方法返回。

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