创建带错误码的error

    • 说明:功能同New/Newf方法,用于创建一个自定义错误信息的error对象,并包含堆栈信息,并增加错误码对象的输入。
    • 实例:

      1. func ExampleNewCode() {
      2. err := gerror.NewCode(gcode.New(10000, "", nil), "My Error")
      3. fmt.Println(err.Error())
      4. fmt.Println(gerror.Code(err))
      5. // Output:
      6. // My Error
      7. // 10000
      8. }
      9. fmt.Println(err.Error())
      10. fmt.Println(gerror.Code(err).Code())
      11. // Output:
      12. // It's My Error
      13. // 10000
      14. }
    • 说明:功能同Wrap/Wrapf方法,用于包裹其他错误error对象,构造成多级的错误信息,包含堆栈信息,并增加错误码参数的输入。
    • 示例:

      1. func ExampleWrapCode() {
      2. err1 := errors.New("permission denied")
      3. err2 := gerror.WrapCode(gcode.New(10000, "", nil), err1, "Custom Error")
      4. fmt.Println(err2.Error())
      5. fmt.Println(gerror.Code(err2).Code())
      6. // Custom Error: permission denied
      7. }
      8. func ExampleWrapCodef() {
      9. err1 := errors.New("permission denied")
      10. err2 := gerror.WrapCodef(gcode.New(10000, "", nil), err1, "It's %s", "Custom Error")
      11. fmt.Println(err2.Error())
      12. fmt.Println(gerror.Code(err2).Code())
      13. // Output:
      14. // It's Custom Error: permission denied
      15. // 10000
      16. }
    • 说明:高级方法,开发者一般很少会用到。功能同NewSkip/NewSkipf,用于创建一个自定义错误信息的error对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略),并增加错误参数输入。

    获取error中的错误码接口

    1. func Code(err error) gcode.Code

    当给定的error参数不带有错误码信息时,该方法返回预定义的错误码gcode.CodeNil