日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Will it finally: 关于 try/catch 的一些细节

發布時間:2024/4/17 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Will it finally: 关于 try/catch 的一些细节 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隨著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 definedat example (<anonymous>:3:5)at <anonymous>: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的清理代碼。事實上,這就是本文的靈感來源。

總結

以上是生活随笔為你收集整理的Will it finally: 关于 try/catch 的一些细节的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。