Java - 若try中有return語句,finally會執行嗎?在return之前還是之後呢?
阿新 • • 發佈:2017-11-19
內存空間 rgs -- 取消 turn all urn stat fin 會執行,在方法return動作之前,return語句執行之後,若finally中再有return語句,則此方法以finally的return作為最終返回,若finally中無return語句,則此方法以try的return作為最終返回。
P:方法的返回值以最後一個執行return語句的運算結果為準,返回值一旦確定,不隨之後執行的代碼影響。
測試程序:
public static void main(String[] args) {
System.out.println(test());
System.out.println("finish..");
}
private static int test() {
int b = 20;
try {
System.out.println("try block");
return b += 80;
}
finally {
System.out.println("finally block");
if (b > 20) {
System.out.println("b = " + b);
}
// 若此行取消註釋,參見輸入2 。
// return 1;
// 若此行取消註釋,參見輸出3。
// b --; // 方法的返回值在finally之前已經定了(可以理解為每個方法都有一個用來保存return值的內存空間),在此再修改b並不會影響返回值。
}
}
輸出:
try block
finally block
b = 100
100
finish..
輸出2:
try block
finally block
b = 100
1
finish..
輸出3:
try block
finally block
b = 100
100
finish..
Java - 若try中有return語句,finally會執行嗎?在return之前還是之後呢?