前言
这篇文章将为大家介绍:GoFrame 错误处理的常用方法&错误码的使用。如何自定义错误对象、如何忽略部分堆栈信息、如何自定义错误码的返回、如何获取error对象中的错误码。
错误创建
New/Newf
用于创建一个自定义错误信息的error对象,并包含堆栈信息。
1
2
|
New (text string ) error Newf(format string , args ... interface {}) error |
Wrap/Wrapf
用于包裹其他错误error对象,构造成多级的错误信息,包含堆栈信息。
1
2
|
func Wrap(err error , text string ) error func Wrapf(err error , format string , args ... interface {}) error |
NewSkip/NewSkipf
用于创建一个自定义错误信息的error对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。高级功能,一般开发者很少用得到。
1
2
|
func NewSkip(skip int , text string ) error func NewSkipf(skip int , format string , args ... interface {}) error |
错误码使用
错误码相关方法概览
1
2
3
4
5
6
|
func NewCode(code int , text string ) error func NewCodef(code int , format string , args ... interface {}) error func NewCodeSkip(code, skip int , text string ) error func NewCodeSkipf(code, skip int , format string , args ... interface {}) error func WrapCode(code int , err error , text string ) error func WrapCodef(code int , err error , format string , args ... interface {}) error |
NewCode/NewCodef
功能同New/Newf方法,用于创建一个自定义错误信息的error对象,并包含堆栈信息,并增加错误码对象的输入。
1
2
|
NewCode(code gcode.Code, text ... string ) error NewCodef(code gcode.Code, format string , args ... interface {}) error |
示例代码
1
2
3
4
5
6
7
8
9
10
|
func ExampleNewCode() { err := gerror.NewCode(gcode. New ( 101 , "" , nil ), "My Error" ) fmt. Println (err. Error ()) // My Error fmt. Println (gerror.Code(err)) //101 } func ExampleNewCodef() { err := gerror.NewCodef(gcode. New ( 101 , "" , nil ), "It's %s" , "My Error" ) fmt. Println (err. Error ()) //It's My Error fmt. Println (gerror.Code(err).Code()) //101 } |
WrapCode/WrapCodef
功能同Wrap/Wrapf方法,用于包裹其他错误error对象,构造成多级的错误信息,包含堆栈信息,并增加错误码参数的输入。
1
2
|
WrapCode(code gcode.Code, err error , text ... string ) error WrapCodef(code gcode.Code, err error , format string , args ... interface {}) error |
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
|
func ExampleWrapCode() { err1 := errors. New ( "permission denied" ) err2 := gerror.WrapCode(gcode. New ( 403 , "" , nil ), err1, "Custom Error" ) fmt. Println (err2. Error ()) // Custom Error: permission denied fmt. Println (gerror.Code(err2).Code()) // 403 } func ExampleWrapCodef() { err1 := errors. New ( "permission denied" ) err2 := gerror.WrapCodef(gcode. New ( 403 , "" , nil ), err1, "It's %s" , "Custom Error" ) fmt. Println (err2. Error ()) // It's Custom Error: permission denied fmt. Println (gerror.Code(err2).Code()) // 403 } |
NewCodeSkip/NewCodeSkipf
功能同NewSkip/NewSkipf,用于创建一个自定义错误信息的error对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略),并增加错误参数输入。
1
2
|
func NewCodeSkip(code, skip int , text string ) error func NewCodeSkipf(code, skip int , format string , args ... interface {}) error |
获取error中的错误码接口
1
|
func Code(err error ) gcode.Code |
当给定的error参数不带有错误码信息时,该方法返回预定义的错误码gcode.CodeNil
总结
通过这篇文章我们了解到使用GoFrame,如何自定义错误对象、如何忽略部分堆栈信息、如何自定义错误码的返回、如何获取error对象中的错误码。
以上就是GoFrame错误处理常用方法及错误码使用示例的详细内容,更多关于GoFrame错误处理错误码的资料请关注服务器之家其它相关文章!
原文链接:https://juejin.cn/post/7112428421392629773