一道关于finally的面试题
程序求输出
public class Test{
public static void main(String[] args){
System.out.println(new Test().test());
}
public int test(){
int res = 1;
try{
throw new Exception();
}catch(Exception e){
return res;
}finally{
res = 2;
System.out.println("finally");
}
}
}
输出结果:
finally
1
解释:
return 之前跳到finally,此时要return 的值已经被存到一个局部引用变量里了,finally中对res的改变对返回值没有影响