代码
public static void main(String[] args) {
System.out.println(test());
}
private static int test() {
int temp = 1;
try {
System.out.println(temp);
return ++temp;
}
catch (Exception e) {
System.out.println(temp);
return temp;
}
finally {
++temp;
System.out.println(temp);//第二个输出
}
}
执行结果
1
3
2
总结
-
finally块一定会执行(除非退出虚拟机),无论是否try…catch。
-
finally块前有return,会先执行return语句,并保存下来,再执行finally块,最后return。
-
finally块前有return、finally块中也有return,先执行前面的return,保存下来,再执行finally的return,覆盖之前的结果,并返回。