go http 处理w.write 错误_go学习笔记-错误处理
生活随笔
收集整理的這篇文章主要介紹了
go http 处理w.write 错误_go学习笔记-错误处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
go語言對異常的處理沒有使用其他編程語言中常見的 try---catch來處理。go語言追求簡潔優雅。在go語言,沒有傳統的異常概念,go使用panic和recover機制對程序的嚴重異常進行處理(例如整數除)
在一般業務代碼里面,go官方推薦通過error狀態返回錯誤
// 按慣例 將err 總是放到最后一個參數返回 func doSomething(v interface{}) (n int, err error) {// 這里是函數業務邏輯return }// 處理時這樣處理 num,err := doSomething() if err != nil{//執行相關錯誤處理 }//正常處理流程panic 與 recover 類似php與java中的try/catch。并且panic與recover都是go 語言中的函數而非語句。panic中斷當前函數流程,執行延遲調用(defer),在延遲調用中 ,通過recover捕獲panic提交的錯誤對象
func panic(v interface{}) func recover() interface{} func main() {num := test()fmt.Println(num) // 此時num為0 }func test() int {// 必須要先聲明defer,否則不能捕獲到panic異常,也就是說要先注冊函數,后面有異常了,才可以調用defer func() {if err := recover(); err != nil {fmt.Println("終于捕獲到了panic產生的異常:", err) // 這里的err其實就是panic傳入的內容}}()panic("fanic 發生了")fmt.Println("panic發生后")return 10 }- 補充:延遲調用語句defer與異常沒有直接關系,如果沒有發生panic仍然會執行導defer。上面例子只是 使用defer進行revover
- defer必須在panic之前聲明,否則當panic時,recover無法捕獲到panic
總結
以上是生活随笔為你收集整理的go http 处理w.write 错误_go学习笔记-错误处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go 开了多少个goroutine 怎么
- 下一篇: 三维空间长度温度数量_塑料压力和温度对注