Java如果在try里面執(zhí)行return還會不會執(zhí)行finally
前言
我們都知道,finally在捕獲異常的操作中,總是最后并且一定會執(zhí)行的。那么,如果我在使用try finally的時候,如果try 給了一個return,那么還會不會執(zhí)行finally呢?這里就來試一試
finally
Finally代碼不管有沒有異常發(fā)生它都會執(zhí)行。
沒有異常發(fā)生的時候,在try內(nèi)的代碼執(zhí)行結(jié)束后,執(zhí)行finally。
如果發(fā)生了異常并且給catch捕獲,則在執(zhí)行完catch之后執(zhí)行finally。
如果有異常且未被捕獲,則在異常被拋給上層之前執(zhí)行。
事實上,不用try catch也可以直接執(zhí)行 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);
}
}
}
測試的結(jié)果是,finally里面的代碼依然會被執(zhí)行。但是,雖然給ret賦值了5。但返回的值最終還是0。所以,即使在try里面使用了return,也依然會執(zhí)行finally。但是finally無法改變return的值。
因為在執(zhí)行的過程中, try執(zhí)行到return,會先把ret的值保存在一個臨時變量中,等到finally執(zhí)行完畢之后才會返回。因此finally無法改變最終的返回結(jié)果
那么,如果我在finally里面也執(zhí)行一個return呢?結(jié)果會怎樣?
代碼如下
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就會丟失。只會執(zhí)行finally里面的return
到此這篇關(guān)于Java如果在try里面執(zhí)行return,那么還會不會執(zhí)行finally的文章就介紹到這了,更多相關(guān)java try執(zhí)行return內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot前后端json數(shù)據(jù)交互的全過程記錄
現(xiàn)在大多數(shù)互聯(lián)網(wǎng)項目都是采用前后端分離的方式開發(fā),下面這篇文章主要給大家介紹了關(guān)于SpringBoot前后端json數(shù)據(jù)交互的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-03-03
springboot根據(jù)實體類生成表的實現(xiàn)方法
本文介紹了如何通過SpringBoot工程引入SpringDataJPA,并通過實體類自動生成數(shù)據(jù)庫表的過程,包括常見問題解決方法,感興趣的可以了解一下2024-09-09
基于Spring Boot DevTools實現(xiàn)開發(fā)過程優(yōu)化
這篇文章主要介紹了基于Spring Boot DevTools實現(xiàn)開發(fā)過程優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09
如何從eureka獲取服務(wù)的ip和端口號進行Http的調(diào)用
這篇文章主要介紹了如何從eureka獲取服務(wù)的ip和端口號進行Http的調(diào)用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java循環(huán)調(diào)用多個timer實現(xiàn)定時任務(wù)
這篇文章主要介紹了Java循環(huán)調(diào)用多個timer實現(xiàn)定時任務(wù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07

