java里的finally与try catch块的return的执行顺序

代码

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;
        }

经常会有

 
posted @ 2021-07-30 20:35  fat鑫  阅读(58)  评论(0)    收藏  举报