情况一:
return在try块中:
先执行finally块,在执行return语句。
情况二:
return在try块中,finally块中也有return语句:
finally语句中的return的返回值会把try块中的return的返回值覆盖。
情况三:
finally内改变返回值的value但不返回继续修改。如果finally语句中没有返回语句覆盖的话,那么原来的返回值就不会变,不管你是不是改变了要返回的那个变量。
情况四:
在try,finally外,返回一个值,如果try,finally内已经有return则外部的return不会起作用。
总结:
碰到try语句中的return,先把return的值放在某个池中,然后执行finally里面的代码块,如果有返回值覆盖语句,就改变先前放在池中的值如果没有,就把那个池中的值取出,即:对待try ,finally内有return语句的情况,只有在finally覆盖return才会改变返回值。否则即使在最外层return新值,也不会改变原有的return值