“finally塊一定會執行嗎?” 這是最近一個工作3年的小伙伴去面試的時候遇到的問題。 你遇到這個問題會怎麼回答呢? 大家好,我是Mic,一個工作了14年的Java程式員 對於這個問題,面試官想考察什麼呢? 問題解析 這個問題,很明顯是考察Java基礎。 finally語句塊在實際開發中使用得非常 ...
“finally塊一定會執行嗎?”
這是最近一個工作3年的小伙伴去面試的時候遇到的問題。
你遇到這個問題會怎麼回答呢?
大家好,我是Mic,一個工作了14年的Java程式員
對於這個問題,面試官想考察什麼呢?
問題解析
這個問題,很明顯是考察Java基礎。
finally語句塊在實際開發中使用得非常多,它是和try語句塊組合使用。
通常情況下,不管有沒有觸發異常,finally語句塊中的代碼是必然會執行的,所以我們會把資源的釋放、或者業務日誌的列印放在finally語句塊裡面。
所以,當大家把這個理念當成是固定的公式以後,就很少會去思考finally語句塊什麼情況下不執行。
這也是難倒很多求職者的原因,所以我認為這個問題主要考察兩個方面:
- 對finally關鍵字的理解程度,其實就是考察Java基礎,良好的Java基礎能夠寫出更加穩定和健壯性的代碼
- 是否具備對技術的探索精神,這樣的人在技術的成長速度上會比一般人更快
高手:
finally語句塊在兩種情況下不會執行:
- 程式沒有進入到try語句塊因為異常導致程式終止,這個問題主要是開發人員在編寫代碼的時候,異常捕獲的範圍不夠。
- 在try或者cache語句塊中,執行了System.exit(0)語句,導致JVM直接退出
總結
好了,今天的分享就到這裡結束了
如果喜歡我的作品,記得點贊、收藏、關註
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自
Mic帶你學架構
!
如果本篇文章對您有幫助,還請幫忙點個關註和贊,您的堅持是我不斷創作的動力。歡迎關註「跟著Mic學架構」公眾號公眾號獲取更多技術乾貨!