Java 中 finally 中的代碼一定會被執行嗎?

至少有兩種情況下finally語句是不會被執行的:

1、try語句沒有被執行到,如在try語句之前return就返回了,這樣finally語句就不會執行。
      這也說明了finally語句被執行的必要而非充分條件是:相應的try語句一定被執行到。


2、在try塊 或者 catch塊中有System.exit(0)這樣的語句。
      System.exit(0)是終止Java虛擬機JVM的,虛擬機停止運行之後,finally語句也不會被執行到。


1、在try catch塊裏有return的時候,finally也會被執行。try或者catch代碼塊中的返回值會先被保留,再來執行finally代碼塊中的語句,等到finally代碼塊執行完畢之後,在把之前保留的返回值給返回出去。

2、如果finally裏有return語句的話,會把try catch塊裏的return語句效果給覆蓋掉。


參考:https://blog.csdn.net/qq_39135287/article/details/78455525

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章