Java try和finally同時(shí)return 最終結(jié)果

java中如果方法中同時(shí)包含了try和finally代碼塊,那么try方法塊會在finally代碼塊前執(zhí)行

如果在try代碼塊 和finally代碼塊中同時(shí)有return語句,那么finally的return的值會覆蓋try代碼塊的值,同時(shí)try中的return語句也會先執(zhí)行,如果return的是方法體,try和finally代碼塊都會執(zhí)行return的方法函數(shù),但是返回值只會是finally代碼塊的。
下面看個(gè)例子:

public class Run {

    public static String print(String a) {
        System.out.println(a);
        return a;
    }

    public static String test() {

        String a = "try代碼塊返回--1";
        try {
            return print(a);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            a = "finally代碼塊返回--2";
            return print(a);
        }
    }

    public static void main(String[] args) {
        String s = test();
        System.out.println("最終返回的數(shù)據(jù)是:" + s);
    }

}

執(zhí)行上面的main方法打印

try代碼塊返回--1
finally代碼塊返回--2
最終返回的數(shù)據(jù)是:finally代碼塊返回--2

進(jìn)程已結(jié)束,退出代碼0

以上證明:
在finally中的代碼始終都會執(zhí)行,如果try中和finally都執(zhí)行了方法那么這個(gè)方法會被重復(fù)執(zhí)行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容