为什么运行结果是10,而不是20呢
不应该执行最后一个return吗
public class Test {
public static void main(String[] args) {
System.out.println(aa());
}
public static int aa() {
int a = 0;
try{
a = a/0;
}catch (Exception e){
a = a+10;
return a;
}finally {
a = a+10;
}
return a;
}
}
因为a = a/0;会抛出异常,执行了catch的return。虽然执行return后会执行finally,但是由于已经返回了,累加值不会提现出来。
因为执行第一个return后就跳出aa()方法了,不会再往下执行了
catch里面已经返回数据了。后面只会执行finally里面的代码,try/catch块外面的代码不会执行了
finally其实已经执行了,他是优于return执行的.但是他不会影响到变量的值
抛异常-> a=10; -> return a;-> 有finally, a的值 10 先进栈-> 执行finally a = 20 -> 将栈里的10返回。