代码
int a =1; try { return a; }finally { return 2; }
上面这段代码最终会返回 2 ,因为finally一定会程序return返回之前执行。当程序执行到try 块里的return时,因为finally还没有执行,所以这里程序并不会返回,而是接着执行finally块的代码,由于finally里的代码有个return语句,所以执行到这里程序结束。
再看一段代码,这里程序执行到try块的return语句时,由于还有个finally块没执行,于是程序没有返回,接着执行finally块,finally返回a,于是乎try块的return语句自动就被覆盖掉了,因为在finally return之后函数就结束了。
说到底其实就是执行顺序的问题,没什么特别的。
int a =1; try { return a; }finally { a =2; return a; }
经常会有
java里的finally与try catch块的return的执行顺序
原文:https://www.cnblogs.com/fatxin/p/15081269.html