我有两个代码片段,我从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块,但在第二个片段中没有这样的路径,所以在最终无法访问后声明。
答案 0 :(得分:1)
第1行是无法访问的语句。因为没有可能去第1行。
如果Exception trows它将在try内部中断。如果没有从方法返回。
如果存在catch块,则确保在try块中发生异常,它将转到第1行