成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

try-catch-finally,被你忽略掉的執(zhí)行順序

bbbbbb / 3176人閱讀

摘要:是捕捉異常的神器,不管是調(diào)試還是防止軟件崩潰,都離不開它。今天筆者介紹一下加上后的執(zhí)行順序嗯按順序執(zhí)行了。現(xiàn)在筆者在語(yǔ)句塊中故意報(bào)錯(cuò)看來(lái),和的都需要先經(jīng)過。

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

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

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

嗯!按順序執(zhí)行了。

我們?cè)趖ry中加入return語(yǔ)句

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

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

等等,難道不應(yīng)該是 1 > from_try > 2的順序嗎?
抱歉啊,是這樣的,在try和catch的代碼塊中,如果碰到return語(yǔ)句,那么在return之前,會(huì)先執(zhí)行finally中的內(nèi)容,所以2會(huì)比f(wàn)rom_try優(yōu)先輸出。

我們?cè)趂inally中也加入return語(yǔ)句

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怎么不見了?
抱歉,按照上一條的規(guī)則,finally是會(huì)優(yōu)先執(zhí)行的,所以如果finally里有return語(yǔ)句,那么就真的return了。

現(xiàn)在筆者在try語(yǔ)句塊中故意報(bào)錯(cuò)

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

看來(lái),try和catch的return都需要先經(jīng)過finally。

結(jié)語(yǔ)

只是一個(gè)很小的細(xì)節(jié)。但也希望各位看官好好利用這種特性。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/107985.html

相關(guān)文章

  • try-catch-finally,被你忽略掉的執(zhí)行順序

    摘要:是捕捉異常的神器,不管是調(diào)試還是防止軟件崩潰,都離不開它。今天筆者介紹一下加上后的執(zhí)行順序嗯按順序執(zhí)行了?,F(xiàn)在筆者在語(yǔ)句塊中故意報(bào)錯(cuò)看來(lái),和的都需要先經(jīng)過。 try-catch是捕捉異常的神器,不管是調(diào)試還是防止軟件崩潰,都離不開它。今天筆者介紹一下加上finally后的執(zhí)行順序 function test() { try { console.log(1); } fin...

    浠ラ箍 評(píng)論0 收藏0
  • 異常機(jī)制詳解

    摘要:當(dāng)運(yùn)行時(shí)系統(tǒng)遍歷調(diào)用棧而未找到合適的異常處理器,則運(yùn)行時(shí)系統(tǒng)終止。不可查異常編譯器不要求強(qiáng)制處置的異常包括運(yùn)行時(shí)異常與其子類和錯(cuò)誤。 目錄介紹 1.什么是異常 2.異常 2.1 異常的概述和分類【了解】 2.2 JVM默認(rèn)是如何處理異常的【理解】 2.3 異常處理的兩種方式【理解】 2.4 try...catch的方式處理異?!菊莆铡?2.5 編譯期異常和運(yùn)行期異常的區(qū)別【理解】...

    wanghui 評(píng)論0 收藏0
  • try-catch-finally中的return

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

    fizz 評(píng)論0 收藏0
  • ES6被你忽略的尾調(diào)用

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

    xeblog 評(píng)論0 收藏0
  • 淺析Java異常處理機(jī)制

    摘要:關(guān)于異常處理的文章已有相當(dāng)?shù)钠疚暮?jiǎn)單總結(jié)了的異常處理機(jī)制,并結(jié)合代碼分析了一些異常處理的最佳實(shí)踐,對(duì)異常的性能開銷進(jìn)行了簡(jiǎn)單分析。是程序正常運(yùn)行中,可以預(yù)料的意外情況,應(yīng)該被捕獲并進(jìn)行相應(yīng)處理。 關(guān)于異常處理的文章已有相當(dāng)?shù)钠?,本文?jiǎn)單總結(jié)了Java的異常處理機(jī)制,并結(jié)合代碼分析了一些異常處理的最佳實(shí)踐,對(duì)異常的性能開銷進(jìn)行了簡(jiǎn)單分析。博客另一篇文章《[譯]Java異常處理的最...

    NSFish 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<