使用 go 时,有一种模式用于定义错误并以(对我而言)非常奇特的方式处理它们。通常错误声明为ErrorSomethingWentWrong = errors.New("Just an example!"). 您可以用来errors.Is(err, ErrorSomethingWentWrong)捕获该特定错误。该Is函数可以通过比较指针来做到这一点。但是为了进行比较,我需要知道哪个变量名用于定义,errorString以便我可以用来errors.Is捕获它。
例如:
ErrorSomethingWentWrong = errors.New("Just an example!")
func DoSomething() (*Something, error) {
return nil, ErrorSomethingWentWrong
}
我知道字符串返回了一个错误"Just an example!",但我不知道它有变量名ErrorSomethingWentWrong:
func checkError() {
if errors.Is(err, ErrorSomethingWentWrong){ // how to know this???
//handle error
}
}
当我使用时,errors.Is(err, ErrorSomethingWentWrong)我可以捕获并处理这个错误。使用调试时,我看不到errorString代表ErrorSomethingWentWrong变量。但是当我不知道变量名是什么时,ErrorSomethingWentWrong我需要对代码进行逆向工程或阅读文档以了解返回了哪个错误。
慕侠2389804
相关分类