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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Go错误处理 11

發布時間:2024/1/1 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go错误处理 11 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡單介紹:Go錯誤處理的方式
這里記錄的是我個人不太熟練的語法和知識
詳細內容移步:李文周的博客(非常詳細)(雖然沒有直接說,其實就是defer、panic、recover)


首先聲明:一直以來,我以為錯誤處理是很高大上的東西,沒怎么碰過,直到…看了這兩份文檔

https://blog.csdn.net/m0_38004619/article/details/98968097
https://www.cnblogs.com/zhangboyu/p/7911190.html

簡單描述:在一個場景中,如果可能出現錯誤,那么首先定義defer + recover語句,接著如果程序panic掉了,defer中的recover就會捕獲panic,然后處理掉。
經典的除零錯誤

func ads() int {defer func() {panic := recover()if panic != nil {// 在這里可以進行數據發送,// 將錯誤信息發送給管理員,以便修改錯誤fmt.Println("panic=", panic)}}()num1 := 10num2 := 0end := num1 / num2return end }

panic= runtime error: integer divide by zero

#error&panic區別
Golang中引入error接口類型作為錯誤處理的標準模式,如果函數要返回錯誤,則返回值類型列表中肯定包含error。error處理過程類似于C語言中的錯誤碼,可逐層返回,直到被處理。

Golang中引入兩個內置函數panic和recover來觸發和終止異常處理流程,同時引入關鍵字defer來延遲執行defer后面的函數。
一直等到包含defer語句的函數執行完畢時,延遲函數(defer后的函數)才會被執行,而不管包含defer語句的函數是通過return的正常結束,還是由于panic導致的異常結束。你可以在一個函數中執行多條defer語句,它們的執行順序與聲明順序相反。
當程序運行時,如果遇到引用空指針、下標越界或顯式調用panic函數等情況,則先觸發panic函數的執行,然后調用延遲函數。調用者繼續傳遞panic,因此該過程一直在調用棧中重復發生:函數停止執行,調用延遲執行函數等。如果一路在延遲函數中沒有recover函數的調用,則會到達該攜程的起點,該攜程結束,然后終止其他所有攜程,包括主攜程。

錯誤和異常從Golang機制上講,就是error和panic的區別。很多其他語言也一樣,比如C++/Java,沒有error但有errno,沒有panic但有throw。

總結

以上是生活随笔為你收集整理的Go错误处理 11的全部內容,希望文章能夠幫你解決所遇到的問題。

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