1. 程式人生 > 程式設計 >Java如果在try裡面執行return還會不會執行finally

Java如果在try裡面執行return還會不會執行finally

前言

我們都知道,finally在捕獲異常的操作中,總是最後並且一定會執行的。那麼,如果我在使用try finally的時候,如果try 給了一個return,那麼還會不會執行finally呢?這裡就來試一試

finally

Finally程式碼不管有沒有異常發生它都會執行。

沒有異常發生的時候,在try內的程式碼執行結束後,執行finally。

如果發生了異常並且給catch捕獲,則在執行完catch之後執行finally。

如果有異常且未被捕獲,則在異常被拋給上層之前執行。

事實上,不用try catch也可以直接執行 try finally。那麼如果我在try 裡面 使用 return 會怎樣呢?

程式碼如下

public class Test {
 public static void main(String[] args) {
  int result = fun();
  System.out.println("result = " + result);
 }
 public static int fun(){
  int ret = 0;
  try{
   return ret;
  }finally {
   ret = 5;
   System.out.println("ret = " + ret);
  }
 }
}

測試的結果是,finally裡面的程式碼依然會被執行。但是,雖然給ret賦值了5。但返回的值最終還是0。所以,即使在try裡面使用了return,也依然會執行finally。但是finally無法改變return的值。

因為在執行的過程中,try執行到return,會先把ret的值儲存在一個臨時變數中,等到finally執行完畢之後才會返回。因此finally無法改變最終的返回結果

那麼,如果我在finally裡面也執行一個return呢?結果會怎樣?

程式碼如下

public class Test {
 public static void main(String[] args) {
  int result = fun();
  System.out.println("result = " + result);
 }
 public static int fun(){
  int ret = 0;
  try{
   return ret;
  }finally {
   ret = 5;
   return ret;
  }
 }
}

這個時候try裡面的return就會丟失。只會執行finally裡面的return

到此這篇關於Java如果在try裡面執行return,那麼還會不會執行finally的文章就介紹到這了,更多相關java try執行return內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!