try中的return和finally谁先执行?
当try中的return要返回的时候,先将要返回的值存储起来,然后执行finally中的语句,然后再将存储的值返回,即或finally中又对此值进行了修改,但已经晚了,因为它返回的是已经存储的值。
例:
public static int aa(){
int i=0;
try {
return ++i;
} catch (Exception e) {
return 5;
} finally{
++i;
System.out.println("我执行过了");
}
}
调用此方法,输出为:
我执行过了
1
那如果是下面这样呢
public static int aa(){
try {
return 1;
} catch (Exception e) {
return 2;
} finally{
return 3;
}
}
结果为3

浙公网安备 33010602011771号