Go 源码解读|如何用好 errors 库的 errors.Is() 与 errors.As() 方法
package main
import (
"errors"
"fmt"
)
// 示例函数,返回可能的错误
func mightFail() error {
// 假设这里有一些逻辑导致失败
return errors.New("operation failed")
}
func main() {
err := mightFail()
// 使用 errors.Is() 检查具体错误
if errors.Is(err, errFailed) {
fmt.Println("操作失败了,确切的错误是:", errFailed)
} else {
fmt.Println("操作没有失败,或者失败的错误不是预期的。")
}
// 使用 errors.As() 检查具体错误类型
var errFailed bool
if errors.As(err, &errFailed) {
fmt.Println("errFailed 变量现在是 true,表示操作确实失败了。")
} else {
fmt.Println("err 不是 errFailed 类型,或操作没有失败。")
}
}
这段代码首先定义了一个可能失败的函数mightFail
,它返回一个简单的错误。在main
函数中,我们调用了这个函数并获取了返回的错误。接着,我们使用errors.Is()
方法检查确切的错误是否匹配预定义的错误变量errFailed
,然后使用errors.As()
方法检查错误是否为布尔变量errFailed
的类型,并将错误的内容赋值给它。这两种方法都是检查错误和处理错误的有效方式。
评论已关闭