题目为java课本习题7.5
public class Test {
public static String output = "";
public static void foo(int i){
try{
if(i==1){throw new Exception();}
output += "1";
}
catch(Exception e){
output += "2";
return;
}
finally{output += "3";
}
output += "4";
}
public static void main(String[] args) {
foo(0);
foo(1);
System.out.println(Test.output);
}
运行结果为
finally后的代码不被执行
去掉return后,finally后的语句被执行。
fianlly虽然是try必然的出口,但finally后的语句却与catch是否return有关。