Java中的try catch finally

來源:互聯網
上載者:User

標籤:

在任何一本Java教材中,異常處理都是作為單獨的章節講解的,足可見其分量。

而真正的能夠用好這個知識,只有經曆實際項目的開發才會有點體會。

1、try catch finally的執行順序

(1).一般情況下:try----catch----finally呢

(2).如果try中有return:try----finally----return

(3).如果catch中有return:try----catch ----finally----return

在後兩種情況下,reurn會被暫存在棧裡面,等到finally執行完再返回。

這種機制保證無論出現什麼情況,在try catch過程中finally都被執行一次,特別適合用於釋放資源,例如釋放資料庫連結、釋放開啟的檔案流等

下面看這一段代碼,結果t會是神馬東東?

public static final String test() {          String t = "";          try {              t = "try";              return t;          }         catch (Exception e) {              t = "catch";                           return t;          }          finally {             t = "finally";     //return t;         }     }    

 

上面我們講到finally之前,return會被暫存到棧裡面。上面代碼裡的t就會暫存起來,等到實際return的時候重新啟用,所以上面的代碼的正確傳回值是"try"。

但是如果我們在finlly字句中添加了return,那麼前面try子句中的t值就會被淹沒,此時實際的傳回值會是"finally"

2、try catch finally結構使用的建議

不建議在finally塊中添加return,因為會消化掉try catch中的異常資訊,不利於錯誤的正常處理,合理的return語句的位置:

(1).return語句只在函數最後出現一次。
(2).return語句僅在try和catch裡面都出現。
(3).return語句僅在try和函數的最後都出現。
(4).return語句僅在catch和函數的最後都出現。

參考: http://www.cnblogs.com/aigongsi/archive/2012/04/19/2457735.html

Java中的try catch finally

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.