Java - 若try中有return語句,finally會執行嗎?在return以前仍是以後呢?

會執行,在方法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..
相關文章
相關標籤/搜索