開發筆記之20140121

關於try catch語句和finally語句塊(轉自http://blog.csdn.net/ns_code/article/details/17485221):

try語句在返回前,將其他所有的操作執行完,保留好要返回的值,而後轉入執行finally中的語句,而後分爲以下三種情況:

    情況一:如果finally中有return語句,則會將try中的return語句”覆蓋“掉,直接執行finally中的return語句,得到返回值,這樣便無法得到try之前保留好的返回值。

    情況二:如果finally中沒有return語句,也沒有改變要返回值,則執行完finally中的語句後,會接着執行try中的return語句,返回之前保留的值。

    情況三:如果finally中沒有return語句,但是改變了要返回的值,這裏有點類似與引用傳遞和值傳遞的區別,分以下兩種情況,:

        1)如果return的數據是基本數據類型,則在finally中對該基本數據的改變不起作用,try中的return語句依然會返回進入finally塊之前保留的值。

        2)如果return的數據是引用數據類型,而在finally中對該引用數據類型的屬性值的改變起作用,try中的return語句返回的就是在finally中改變後的該屬性的值。



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