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

資訊專欄INFORMATION COLUMN

Will it finally: 關于 try/catch 的一些細節

asce1885 / 1174人閱讀

摘要:隨著的出現,我最近發現自己在我的代碼中使用了更多。但老實說,我終于用做了一點練習。當我去實際使用它時,我有點不確定它的細節。事實上,這就是本文的靈感來源。

隨著async /await的出現,我最近發現自己在我的代碼中使用了更多try /catch /finally。但老實說,我終于用“finally”做了一點練習。當我去實際使用它時,我有點不確定它的細節。所以我把幾個例子放在一起。

當你 throw 一個 catch

考慮你在一個catch塊跑出一個異常。在退出函數之前沒有什么可以捕獲你的throw。那“ finally”會運行嗎??

function example() {
  try {
    fail()
  }
  catch (e) {
    console.log("Will finally run?")
    throw e
  }
  finally {
    console.log("FINALLY RUNS!")
  }
  console.log("This shouldn"t be called eh?")
}

 example()

控制臺結果

Will finally run?
FINALLY RUNS!
Uncaught ReferenceError: fail is not defined
    at example (:3:5)
    at :15:2
    

finally運行,即使并沒有打印最后一個日志語句!但它確實拋出了錯誤。

你可以看到finally有點特別;它允許你在拋出錯誤和離開函數之間運行,即使拋出catch塊。

嘗試沒有捕獲(catch)

您是否知道如果您提供finally塊,您也不需要提供catch塊?你可能做到了,但值得一提!

接下來的問題是:即使在try塊中沒有出錯,finally塊也會被調用嗎?

function example() {
  try {
    console.log("Hakuna matata")
  }
  finally {
    console.log("What a wonderful phrase!")
  }
}

example()

控制臺結果

[log] Hakuna matata
[log] What a wonderful phrase!

是的,即使沒有出錯也會調用finally。當然,當does出錯時,它也會被調用。

這就是finally背后的想法 - 它可以讓你處理這兩種情況,正如你在這個例子中看到的那樣:

function example() {
  try {
    console.log("I shall try and fail");
fail();
}
  catch (e) {
    console.log("Then be caught");
}
  finally {
    console.log("And finally something?");
}
}

 example()

控制臺結果

[log] I shall try and fail
[log]Then be caught
[log] And finally something?
那如果return了? finally還會執行嗎?

所以最后讓你在異常發生時自己清理。但是什么時候什么都不會出錯,你只是從函數中“返回”正常...在try塊中?

看看下面的例子。example()中的finally塊是否可以運行after你已經命中了return語句?

function example() {
  try {
    console.log("I"m picking up my ball and going home.")
    return
  }
  finally {
    console.log("Finally?")
  }
}

example()

控制臺結果

[log] I"m picking up my ball and going home.
[log]Finally?
規則

try /catch /finally上的finally塊都將運行 - 即使你提前catch或"return`。

這就是它如此有用的原因;無論發生什么情況,它都將運行,那么這就是將,始終要運行的代碼的理想場所,比如容易出錯的IO的清理代碼。事實上,這就是本文的靈感來源。

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

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

相關文章

  • Will it finally: 關于 try/catch 一些細節

    摘要:隨著的出現,我最近發現自己在我的代碼中使用了更多。但老實說,我終于用做了一點練習。當我去實際使用它時,我有點不確定它的細節。事實上,這就是本文的靈感來源。 隨著async /await的出現,我最近發現自己在我的代碼中使用了更多try /catch /finally。但老實說,我終于用finally做了一點練習。當我去實際使用它時,我有點不確定它的細節。所以我把幾個例子放在一起。 當你...

    zhangrxiang 評論0 收藏0
  • Will it finally: 關于 try/catch 一些細節

    摘要:隨著的出現,我最近發現自己在我的代碼中使用了更多。但老實說,我終于用做了一點練習。當我去實際使用它時,我有點不確定它的細節。事實上,這就是本文的靈感來源。 隨著async /await的出現,我最近發現自己在我的代碼中使用了更多try /catch /finally。但老實說,我終于用finally做了一點練習。當我去實際使用它時,我有點不確定它的細節。所以我把幾個例子放在一起。 當你...

    褰辯話 評論0 收藏0
  • 淺析Java異常處理機制

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

    NSFish 評論0 收藏0
  • js錯誤處理權威指北

    摘要:第一個是,是你傳遞給異常的構造函數的參數,比如你可以使用屬性來訪問到該消息第二個參數是異常堆棧跟蹤,非常重要。異常產生后能在后端正確處理是的關鍵部分。我將向你展示自定義構造函數和錯誤代碼的方法,我們可以輕松地將其傳遞給前端或任何調用者。 By Lukas Gisder-Dubé | nov 14, 2018 原文 接著我上一篇文章,我想談談異常。我肯定你之前也聽過——異常是個好東西。一...

    lykops 評論0 收藏0

發表評論

0條評論

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