1. 程式人生 > >try catch finally中finally是如何逃過return必死的命運

try catch finally中finally是如何逃過return必死的命運

try catch 和finally這種語句我想大家都已經熟的不能再熟了,今天我們來看一看finally為什麼能夠逃脫掉return還能執行的祕密。

首先我們來看一段程式碼來熱熱身:

檢視上面的程式碼能夠讓我們明顯感覺到finally可能是在return之後執行的,不過return確實是在finally之後執行

一般來說一個方法遇到retrun的話就會直接結束該方法了,那麼finally究竟是如何做的,逃脫掉return命運的呢

雖然我們在編寫的程式碼中檢視是 return新執行了,但是編譯器會將其修正成最後執行。

可能會有人說如果這種情況呢:

明明是新return 在執行的finally,其實這裡呢,編譯器會再次建立一個變數來儲存k的值,並在最後將儲存的值return回去,而不是在finally之前就return。

不過顯然再次建立的變數並不是通過深拷貝來實現的具體看以下例子:

引用型別的變數被修改了。

記錄生活點點滴滴。