回傳值不變的原因
在 try-finally 語句中,try 區塊的執行隨著 return 語句的執行而結束。此時,此方法傳回的變數 s 的值就是執行 return 語句時 s 的值。
儘管 finally 子句稍後修改了 s 的值,但它確實在 return 語句執行後,不要更改方法的回傳值。
不可變物件與可變物件
需要注意的是,這種行為適用於直接修改s 本身位於finally 區塊中。但是,如果 s 引用了可變物件(String 不是),則修改 finally 區塊中的物件內容將反映在傳回值中。
法律規格
Java 語言規格 (JLS) 在第 14.20.2 節中提供了這些操作的詳細指南。在本節中,它指出 try 區塊中的 return 語句構成突然終止。因此,第 14.17 節解釋了 return 語句突然結束區塊執行。
異常處理和Return 語句
如果try 區塊和finally 區塊由於return 突然終止語句,適用§14.20.2 中的規則:
以上是為什麼Finally 區塊中的Return 語句會覆寫Try 區塊的回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!