【JAVA】 try catch finally 中包含return的幾種情況,及返回結果

第一種情況:在try和catch中有return,finally中沒有return,且finally中沒有對try或catch中要 return。這種情況,無論如何finally中的代碼塊都會執行,然後再執行try或者finally中的return。

第二種情況:在try和catch中有return,finally中沒有return,但finally中有對try或catch中要 return數據進行操作的代碼

返回的數據爲基本數據類型,則finally中對要返回數據操作無影響。try或者catch要返回的值存到了其他局部變量中,所以finally怎麼操作數據都不影響返回值。
返回的數據爲引用數據類型,finally中如果改變了返回對象的屬性則影響結果,如果改變的是對象的引用則和基本數據類型一樣不改變結果。如果改變內容了,這有影響。

第三種情況:在try和catch中有return,finally中也有return
try或catch中return後面的代碼會執行,但最終返回的結果爲finally中return的值,需要注意的是try或catch中return後面的代碼會執行,只是存起來了,並沒有返回,讓finally捷足先登先返回了

第四種情況:在try中有return,在catch中新拋出異常,finally中有return
如果catch塊中捕獲了異常, 並且在catch塊中將該異常throw給上級調用者進行處理, 但finally中有return, 那麼catch塊中的throw就失效了, 上級方法調用者是捕獲不到異常

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