无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Go語言的學(xué)習(xí) —— panic 和 recover

2023-07-19 12:13 作者:巷陌雨季  | 我要投稿

本專欄僅作為Up本人對于學(xué)習(xí)Go語言過程中的一些記錄和心得,如有錯誤,還請指出~~

Golang

Less is More.

Go的異常處理

正如前面所提到的“Less is More”, Go語言追求簡潔優(yōu)雅,所以Go語言并不支持try...catch...finally這種異常處理。Go語言區(qū)分了錯誤和異常,在Go語言中,錯誤相當(dāng)于Java中"Exception",而異常則是需要人工介入的重大錯誤。既然程序是人寫的,那難免會產(chǎn)生bug,那當(dāng)程序產(chǎn)生異常時,程序員要怎么去處理這些異常呢。這里,我們就需要用到panic了。

什么是panic

When you panic in Go, you’re freaking out, it’s not someone elses problem, it’s game over man.

Panic這個單詞的意思是恐慌,在Go語言中作為關(guān)鍵字可以理解為程序運行時恐慌。在Go協(xié)程中使用panic,會終結(jié)并殺死該協(xié)程。

比方說:


我們用菜鳥教程里的在線工具(https://c.runoob.com/compile/21/)嘗試去運行一下上面的代碼,我們會發(fā)現(xiàn)程序輸出了“Link Start!”,隨后便是被“panic”了,并沒有輸出最后的“Link Failed...”。

輸出1

在某些情況下,我們并不想直接結(jié)束這個協(xié)程,那這時就輪到recover上場了。


用recover來控制panic

recover,顧名思義就是恢復(fù),用來控制一個goroutine的panicking行為,捕獲panic,從而影響應(yīng)用的行為。但必須在代碼中先聲明defer,否則不能正常捕獲panic。

舉個栗子:

OK,我們發(fā)現(xiàn)在輸出中已經(jīng)沒有了panic的身影。相反,我們可以知道panic被捕獲了。

輸出2


END

相關(guān)文章:

https://zhuanlan.zhihu.com/p/87345297

https://zhuanlan.zhihu.com/p/373653492

https://zhuanlan.zhihu.com/p/222367644

https://juejin.cn/post/7186269730934620220

Go語言的學(xué)習(xí) —— panic 和 recover的評論 (共 條)

分享到微博請遵守國家法律
云安县| 漾濞| 镇原县| 崇义县| 八宿县| 会宁县| 股票| 交城县| 共和县| 宿松县| 河北省| 温泉县| 烟台市| 大英县| 长岛县| 雷山县| 兰考县| 莱州市| 钟祥市| 朔州市| 德格县| 定远县| 银川市| 合水县| 安宁市| 卓尼县| 巴中市| 长春市| 临湘市| 颍上县| 武威市| 渭源县| 高碑店市| 曲水县| 青岛市| 宜城市| 五指山市| 扎囊县| 唐海县| 榆林市| 伽师县|