亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢查恢復中的確切錯誤類型?

如何檢查恢復中的確切錯誤類型?

Go
千萬里不及你 2021-12-20 17:10:01
我在這里關注這個例子:https://www.socketloop.com/tutorials/golang-smarter-error-handling-with-strings-contains-function if !strings.Contains(err.Error(), "timed out") {    fmt.Printf("resulting error not a timeout: %s", err) }但是,如果我在我的代碼中這樣做,我會得到這個err.Error 未定義(類型 interface {} 是沒有方法的接口)我想知道我在這里做錯了什么,我應該如何檢查確切的錯誤(在我的情況下,我想從錯誤“切片邊界超出范圍”中恢復)最好的,
查看完整描述

1 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

使用類型斷言獲取error https://play.golang.org/p/BryV7YfZHS


defer func(){

    err := recover().(error)

    fmt.Println(err.Error())

}()


a := make([]int, 0)

a[1] = 0

但我建議你不要這樣做。首先,你不應該使用recover。在幾乎所有情況下,這意味著你做錯了什么。相反,修復恐慌的代碼。


其次,不要使用字符串匹配來確定錯誤的原因。它不好的原因有很多,但我只想說這不是 Go 的做事方式。我知道您可能正在使用的 API 并沒有讓您選擇,而是嘗試找到更好的方法。使用類型斷言,輸入 switch 以獲取確切的錯誤類型并從那里開始。


查看完整回答
反對 回復 2021-12-20
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號