我有两个代码片段,都在try和finally块中返回。第一个工作正常,在最后也打印出来,但是在标记为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
}
}
回答: 第一段代码中,程序执行时会进入try块,如果在try块中出现异常,则跳转到catch块执行相应的代码,最后执行finally块中的语句。而第二段代码中没有这样的路径,因此finally块后面的语句将无法执行。
return
本身抛出Error
有关。 - Boris the Spidercatch
块会出现 "Unreachable statement" 错误 - 我想。 - Boris the Spider