try-catch-finally 異常總結

try 塊:用于捕獲異常。其后可接零個或多個catch塊,如果沒有catch塊,則必須跟一個finally塊。
catch 塊:用于處理try捕獲到的異常。
finally 塊:無論是否捕獲或處理異常,finally塊里的語句都會被執行。當在try塊或catch塊中遇到return語句時,finally語句塊將在方法返回之前被執行。在以下4種特殊情況下,finally塊不會被執行:
1)在finally語句塊中發生了異常。
2)在前面的代碼中用了System.exit()退出程序。
3)程序所在的線程死亡。
4)關閉CPU。

對于含有return語句的情況,這里我們可以簡單地總結如下:

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中改變后的該屬性的值。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 概念介紹 異常是發生在程序執行過程中阻礙程序正常執行的錯誤事件,當一個程序出現錯誤時,可能的情況有如下3種: 語法...
    niaoge2016閱讀 5,215評論 2 20
  • 通俗編程——白話JAVA異常機制 - 代碼之道,編程之法 - 博客頻道 - CSDN.NEThttp://blog...
    葡萄喃喃囈語閱讀 3,197評論 0 25
  • 那天晚上聊了好多 我從頭都沒有正面回答他,而是一直在和他閑聊,對沒錯,啥事兒都沒發生似的閑聊 ...
    610VIX閱讀 297評論 0 0
  • 生活豐富多彩,我們應該笑著面對。 耶! 下午的時候,我收到了來自剽悍晨讀獲贈的一本書,心里又是激動又是開學,沒有什...
    大Coco的中文叫韓大臉閱讀 227評論 0 0
  • 當晚霞的微風 輕輕拂過。 帶來了,一夜的寧靜。 帶走了,一日的憂愁。 或者,這才是生活的趣味。
    扎西丁真閱讀 221評論 0 3