我有两个代码片段,我从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行是无法访问的语句 . 因为没有可能去line1 .
如果Exception trows它会在内部尝试 . 如果没有从方法返回 .
如果catch块存在,它确保如果在try块中发生异常它将转到第1行