首页 文章

在try finally块中从try块返回

提问于
浏览
4

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

第一个片段

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 回答

  • 1

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

    如果Exception trows它会在内部尝试 . 如果没有从方法返回 .

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

相关问题