gpt4 book ai didi

go - 如何检查恢复中错误的确切类型?

转载 作者:数据小太阳 更新时间:2023-10-29 03:15:55 24 4
gpt4 key购买 nike

我在这里遵循这个例子:

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 undefined (type interface {} is interface with no methods)

我想知道我在这里做错了什么,我应该如何检查确切的错误(在我的例子中我想从错误“slice 边界超出范围”中恢复)

最好的,

最佳答案

使用类型断言得到错误 https://play.golang.org/p/BryV7YfZHS

defer func(){
err := recover().(error)
fmt.Println(err.Error())
}()

a := make([]int, 0)
a[1] = 0

但我建议你不要那样做。首先,你不应该使用恢复。在几乎所有情况下,这都意味着你做错了什么。相反,修复出现 panic 的代码。

其次,不要使用字符串匹配来确定错误原因。它不好的原因有很多,但我只想说这不是 Go 的做事方式。我知道您可能正在使用的 API 不会给您留下选择余地,而是尝试找到更好的方法。使用类型断言、类型切换来获取准确的错误类型并从那里开始。

关于go - 如何检查恢复中错误的确切类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35969911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com