从v1.15版本开始,gerror增加了对自定义错误码的支持。
v1.15
gerror
error
NewCode/NewCodef
func NewCode(code int, text string) error func NewCodef(code int, format string, args ...interface{}) error
功能同New/Newf方法,用于创建一个自定义错误信息的error对象,并包含堆栈信息,并增加错误码参数的输入。
New/Newf
WrapCode/WrapCodef
func WrapCode(code int, err error, text string) error func WrapCodef(code int, err error, format string, args ...interface{}) error
功能同Wrap/Wrapf方法,用于包裹其他错误error对象,构造成多级的错误信息,包含堆栈信息,并增加错误码参数的输入。
Wrap/Wrapf
NewCodeSkip/NewCodeSkipf
func NewCodeSkip(code, skip int, text string) error func NewCodeSkipf(code, skip int, format string, args ...interface{}) error
高级方法,开发者一般很少会用到。功能同NewSkip/NewSkipf,用于创建一个自定义错误信息的error对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略),并增加错误参数输入。
NewSkip/NewSkipf
func Code(err error) int
当给定的error参数不带有错误码信息时,该方法返回-1,否则返回error对应携带的错误码值。
-1
GRPC
>1000
NewCode
err := gerror.NewCode(10000, "My Error") fmt.Println(err.Error()) fmt.Println(gerror.Code(err)) // Output: // My Error // 10000
NewCodef
err := gerror.NewCodef(10000, "It's %s", "My Error") fmt.Println(err.Error()) fmt.Println(gerror.Code(err)) // Output: // It's My Error // 10000
WrapCode
err1 := errors.New("permission denied") err2 := gerror.WrapCode(10000, err1, "Custom Error") fmt.Println(err2.Error()) fmt.Println(gerror.Code(err2)) // Output: // Custom Error: permission denied // 10000
WrapCodef
err1 := errors.New("permission denied") err2 := gerror.WrapCodef(10000, err1, "It's %s", "Custom Error") fmt.Println(err2.Error()) fmt.Println(gerror.Code(err2)) // Output: // It's Custom Error: permission denied // 10000
今天从1.16.4升级到了1.16.6,结果发现增加了gcode.Code,导致gerror.New定义全变了(文档却还没更新)。改了老久才处理完这个兼容问题。
还是希望小版本更新不要出现这种兼容问题。。。
1 Comment
朱华 Hunk
今天从1.16.4升级到了1.16.6,结果发现增加了gcode.Code,导致gerror.New定义全变了(文档却还没更新)。改了老久才处理完这个兼容问题。
还是希望小版本更新不要出现这种兼容问题。。。