java中try-catch-finally-return的分析
try/catch/finally
一、疑问
try-catch-finally-return的执行顺序是咋样的?
当try和catch中有return语句时,finally块会不会执行?
当try和catch中有return语句时 ,返回值是当try和catch中的返回值,还是finally 的返回值?
示例一:
1. 执行try里的语句,b = 3 暂存
2. 没有异常,执行finally里 b = 5
3. 继续跑到try里去return,此时b = 5了
//答案是5
示例二:
1. 执行try, b = 3 暂存
2. 没有异常,执行finally b = 5, 有return语句,继续执行 return 5;
//答案 5
所以嘛:总结下来就是,如果try/catch/finaly都有return,返回finaly里的,finaly里没有,返回try/catch里的
在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。在转去之前,try中先把要返回的结果存放到不同于x的局部变量中去,执行完finally之后,在从中取出返回结果,因此,即使finally中对变量x进行了改变,但是不会影响返回结果。