国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

try-catch-finally,被你忽略掉的執行順序

浠ラ箍 / 1677人閱讀

摘要:是捕捉異常的神器,不管是調試還是防止軟件崩潰,都離不開它。今天筆者介紹一下加上后的執行順序嗯按順序執行了。現在筆者在語句塊中故意報錯看來,和的都需要先經過。

try-catch是捕捉異常的神器,不管是調試還是防止軟件崩潰,都離不開它。今天筆者介紹一下加上finally后的執行順序

function test() {
  try {
    console.log(1);
  } finally {
    console.log(2);
  }
}

console.log(test()); // 1 2

嗯!按順序執行了。


我們在try中加入return語句

function test() {
  try {
    console.log(1);
    return "from_try";
  } catch (e) {
    // TODO
  } finally {
    console.log(2);
  }
}

console.log(test()); // 1 2 from_try

等等,難道不應該是 1 > from_try > 2的順序嗎?
抱歉啊,是這樣的,在try和catch的代碼塊中,如果碰到return語句,那么在return之前,會先執行finally中的內容,所以2會比from_try優先輸出。


我們在finally中也加入return語句

function test() {
  try {
    console.log(1);
    return "from_try";
  } catch (e) {
    // TODO
  } finally {
    console.log(2);
    return "from_finally";
  }
}

console.log(test()); // 1 2 from_finally

買噶的,我的from_try怎么不見了?
抱歉,按照上一條的規則,finally是會優先執行的,所以如果finally里有return語句,那么就真的return了。


現在筆者在try語句塊中故意報錯

function test() {
  try {
    console.log(1);
    throw new Error("throw");
  } catch (e) {
    console.log(e.message);
    return "from_catch";
  } finally {
    console.log(2);
  }
}

console.log(test()); // 1 throw 2 from_catch

看來,try和catch的return都需要先經過finally。

結語

只是一個很小的細節。但也希望各位看官好好利用這種特性。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28766.html

相關文章

  • try-catch-finally被你忽略掉的執行順序

    摘要:是捕捉異常的神器,不管是調試還是防止軟件崩潰,都離不開它。今天筆者介紹一下加上后的執行順序嗯按順序執行了。現在筆者在語句塊中故意報錯看來,和的都需要先經過。 try-catch是捕捉異常的神器,不管是調試還是防止軟件崩潰,都離不開它。今天筆者介紹一下加上finally后的執行順序 function test() { try { console.log(1); } fin...

    bbbbbb 評論0 收藏0
  • 異常機制詳解

    摘要:當運行時系統遍歷調用棧而未找到合適的異常處理器,則運行時系統終止。不可查異常編譯器不要求強制處置的異常包括運行時異常與其子類和錯誤。 目錄介紹 1.什么是異常 2.異常 2.1 異常的概述和分類【了解】 2.2 JVM默認是如何處理異常的【理解】 2.3 異常處理的兩種方式【理解】 2.4 try...catch的方式處理異常【掌握】 2.5 編譯期異常和運行期異常的區別【理解】...

    wanghui 評論0 收藏0
  • try-catch-finally中的return

    摘要:基礎系列的與方法類初始化順序線程池如何彈性伸縮的幾個要點的緩存什么場景下使用阻塞隊列的使用及模式中的序本文主要簡述中有的情況。參考關于中的執行順序 Java基礎系列 Java的hashcode與equals方法 Java類初始化順序 ThreadPoolExecutor線程池如何彈性伸縮 HashMap的幾個要點 Integer的緩存 什么場景下使用阻塞隊列 volatile的使用及...

    fizz 評論0 收藏0
  • ES6被你忽略的尾調用

    摘要:被你忽略的尾調用尾調用是什么在有一個新特性尾調用用最簡單的一句話描述就是某個函數的最后一步再調用另一個函數,聽起來挺簡單的,但是它的功能特別強大,直接給你擼個例子吧。如果函數內部還調用函數,那就還有一個的調用記錄棧,以此類推。 title: 被你忽略的‘尾調用’date: 2017-05-02 16:52:22 tags: [ES6,javascript] 尾調用是什么? 在ES6有...

    xeblog 評論0 收藏0
  • 淺析Java異常處理機制

    摘要:關于異常處理的文章已有相當的篇幅,本文簡單總結了的異常處理機制,并結合代碼分析了一些異常處理的最佳實踐,對異常的性能開銷進行了簡單分析。是程序正常運行中,可以預料的意外情況,應該被捕獲并進行相應處理。 關于異常處理的文章已有相當的篇幅,本文簡單總結了Java的異常處理機制,并結合代碼分析了一些異常處理的最佳實踐,對異常的性能開銷進行了簡單分析。博客另一篇文章《[譯]Java異常處理的最...

    NSFish 評論0 收藏0

發表評論

0條評論

浠ラ箍

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<