摘要:在網上看到一段代碼運行結果到這里,有很多人會感到納悶之后函數不就結束了嗎怎么還是執行域內的語句為了說明這個問題,我們先談談關鍵字。因此,被用來執行無論是否有異常總是要運行的事件。
在網上看到一段代碼
public class Test { public static int tt() { int b = 23; try { System.out.println("yes"); return b += 88; } catch (Exception e) { System.out.println("error: " + e); } finally { if (b > 25) { System.out.println("b>25: " + b); } System.out.println("finally"); } return b; } public static void main(String[] args) { System.out.print("main method: " + tt()); } }
運行結果:
yes
b>25: 111
finally
main method: 111
到這里,有很多人會感到納悶:return之后函數不就結束了嗎?怎么還是執行finally域內的語句?為了說明這個問題,我們先談談finally關鍵字。
finally的作用關鍵字finally是try的關鍵字,一般與try成對出現,意味著無論try塊是怎么退出的,finally子句中的代碼總是會被執行的。因此,finally被用來執行無論是否有異常總是要運行的事件。
一般情況下,return表示了調用方法的結束,但finally是個例外。如果用System.exit()退出程序的話,當然finally就不會執行了。
參考資料[1] Does finally always execute in Java?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66153.html
摘要:緩沖輸入流從被稱為緩沖區的存儲器區域讀出數據僅當緩沖區是空時,本地輸入才被調用。同樣,緩沖輸出流,將數據寫入到緩存區,只有當緩沖區已滿才調用本機輸出。 :https://segmentfault.com/blog... 1.前言 前陣子休息天日常在尋找項目里不好的代碼,看到了這樣的一段代碼: private Result sshSameExec(Session session,...
摘要:安全性小結我們上邊介紹了原子性操作內存可見性以及指令重排序三個在多線程執行過程中會影響到安全性的問題。 指令重排序 如果說內存可見性問題已經讓你抓狂了,那么下邊的這個指令重排序的事兒估計就要罵娘了~這事兒還得從一段代碼說起: public class Reordering { private static boolean flag; private static in...
摘要:事實上,所謂的同步就是指阻塞式操作,而異步就是非阻塞式操作。中可以通過設值注入方法注入和構造器注入實現,推薦使用的方式為設值注入。 寫在前面 春天來了,萬物復蘇的季節到了. 許多程序猿安奈不住生理需求,我要漲工資,我要跳槽. 畢竟金三銀四嘛. 那么要從眾多的面試者中獲得求職機會,我們就要面對很多的面試題. 程序猿是最煩面試題的.面試的公司也煩,面試的人也煩. 但是沒辦法.面試的人魚龍混...
摘要:允許存在多個,用于針對不同的異常做不同的處理。表示程序可能需要捕獲并且處理的異常。因此,我們應該盡可能的避免通過異常來處理正常的邏輯檢查,這樣可以確保不會因為發生異常而導致性能問題。異常表中的每一條記錄,都代表了一個異常處理器。 showImg(https://segmentfault.com/img/remote/1460000017918154?w=640&h=100); show...
閱讀 1417·2021-11-09 09:45
閱讀 1785·2021-11-04 16:09
閱讀 1449·2021-10-14 09:43
閱讀 1814·2021-09-22 15:24
閱讀 1589·2021-09-07 10:06
閱讀 1597·2019-08-30 14:15
閱讀 980·2019-08-30 12:56
閱讀 1563·2019-08-29 17:22