Equal
比较方法
如果自定义的错误数据结构需要支持比较,需要自定义的错误结构实现以下接口:
Equal(target error) bool
需要注意,如果两个错误均不带错误码,并且错误信息相等,那么组件认为两个错误相等。
Is
包含判断
// Is reports whether current error `err` has error `target` in its chaining errors.
func Is(err, target error) bool
如果自定义的错误数据结构需要支持包含判断,需要自定义的错误结构实现以下接口:
需要注意,通过errors
标准库创建的错误对象是最原始的错误对象,仅带有错误字符串,没有实现Is
接口,因此不支持Is
判断。
func ExampleIs() {
err1 := errors.New("permission denied")
err2 := gerror.Wrap(err1, "operation failed")
fmt.Println(gerror.Is(err1, err1))
fmt.Println(gerror.Is(err2, err2))
// Output:
// false
// true
// true
// false
}