Equal比较方法

如果自定义的错误数据结构需要支持比较,需要自定义的错误结构实现以下接口:

  1. Equal(target error) bool

需要注意,如果两个错误均不带错误码,并且错误信息相等,那么组件认为两个错误相等。

Is包含判断

  1. // Is reports whether current error `err` has error `target` in its chaining errors.
  2. func Is(err, target error) bool

如果自定义的错误数据结构需要支持包含判断,需要自定义的错误结构实现以下接口:

需要注意,通过errors标准库创建的错误对象是最原始的错误对象,仅带有错误字符串,没有实现Is接口,因此不支持Is判断。

  1. func ExampleIs() {
  2. err1 := errors.New("permission denied")
  3. err2 := gerror.Wrap(err1, "operation failed")
  4. fmt.Println(gerror.Is(err1, err1))
  5. fmt.Println(gerror.Is(err2, err2))
  6. // Output:
  7. // false
  8. // true
  9. // true
  10. // false
  11. }