这个问题以前讨论过,现在也有许多人在问,也有许多人在回答。
我说下我的理解,可能有问题,因为思路有bug。
代码,大家都知道,简单写下:
int xxx(){
try{
return 1;
}finally{
return 2;
}
}
先执行return,返回一个值1到栈中;再执行finally,再返回一个值2到栈中。然后方法xxx结束,返回一个值,该值从栈中获取,栈后进先出,所以拿到值2.
这是我的理解,此时方法结束,可是这个方法执行完后,栈中多了一个值1,每执行一次栈中就多一个值,这不会对程序造成影响吗?
我是这样理解try和finally的。但上面这点没想明白。 |