如果在 try 模塊里最后加了個 return, finally 模塊還會執(zhí)行嗎?

2018-07-03 15:15 更新

是的. finally 模塊會先執(zhí)行再 return.

如果換成 System.exit (0)?

那就不會了. System.exit (0) 時. 會立馬跳出程序.

try catch finally 的執(zhí)行順序

特殊情況就是里面加 return

舉個例子去理解

public int getNumber() {


    int a = 0;


    try {
        String s = "t"; ------------------------(1)
        a = Integer.parseInt(s);-----------(2)
        return a;
    } catch (NumberFormatException e) {
        a = 1;-----------------------------------(3)
        return a;-------------------------------(4)
    } finally {
        a = 2;-----------------------------------(5)
    }
}

1、程序中標(biāo)記的代碼的執(zhí)行順序? 2、改程序的最后返回值(外部調(diào)用時)?

程序按順序從上到下執(zhí)行到(2),字符"t"轉(zhuǎn)換成整數(shù)失敗,產(chǎn)生異常并被捕獲, 于是對a賦值成1,并將此值作為此方法的返回值(可以這么認為,該方法有一個存放返回值的空間,此時將1放在此處)。由于存在finally塊,在返回前將該方法的內(nèi)部變量a修改成2。 所以程序?qū)礃?biāo)記的順序執(zhí)行,外部調(diào)用該方法時得到的結(jié)果是1+

先執(zhí)行try或catch里里面的代碼,然后再執(zhí)行finally,再執(zhí)行try或catch里面的return.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號