我在这里遵循这个例子:
https://www.socketloop.com/tutorials/golang-smarter-error-handling-with-strings-contains-function
{{(partecipant}}
但是,如果我在我的代码中这样做,我会得到这个
err.Error undefined(type interface {}是没有方法的接口)
我想知道我在这里做错了什么,我应该如何检查确切的错误(在我的情况下我想从错误中恢复"切片范围超出范围")
最佳,
答案 0 :(得分:1)
使用类型断言获取error
https://play.golang.org/p/BryV7YfZHS
defer func(){
err := recover().(error)
fmt.Println(err.Error())
}()
a := make([]int, 0)
a[1] = 0
但我建议你不要这样做。首先,你不应该使用恢复。在几乎所有情况下,这意味着你做错了什么。相反,修复恐慌的代码。
其次,不要使用字符串匹配来确定错误的原因。有很多原因导致它不好但我只是说它不是Go的做事方式。我了解您可能正在使用的API不会让您做出选择,但会尝试找到更好的方法。使用类型断言,键入switch以获取确切的错误类型并从那里开始。