GoFrame 错误处理的常用方法&错误码的使用
highlight: a11y-dark theme: smartblue
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情
前言摘要
这篇文章将为大家介绍:GoFrame 错误处理的常用方法&错误码的使用。如何自定义错误对象、如何忽略部分堆栈信息、如何自定义错误码的返回、如何获取error对象中的错误码。
错误创建
New/Newf
用于创建一个自定义错误信息的error
对象,并包含堆栈信息。
go
New(text string) error
Newf(format string, args ...interface{}) error
Wrap/Wrapf
用于包裹其他错误error
对象,构造成多级的错误信息,包含堆栈信息。
go
func Wrap(err error, text string) error
func Wrapf(err error, format string, args ...interface{}) error
NewSkip/NewSkipf
用于创建一个自定义错误信息的error
对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。高级功能,一般开发者很少用得到。
go
func NewSkip(skip int, text string) error
func NewSkipf(skip int, format string, args ...interface{}) error
错误码使用
错误码相关方法概览
go
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
对象,并包含堆栈信息,并增加错误码对象的输入。
go
NewCode(code gcode.Code, text ...string) error
NewCodef(code gcode.Code, format string, args ...interface{}) error
示例代码
```go 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
对象,构造成多级的错误信息,包含堆栈信息,并增加错误码参数的输入。
go
WrapCode(code gcode.Code, err error, text ...string) error
WrapCodef(code gcode.Code, err error, format string, args ...interface{}) error
示例代码
```go 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
对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略),并增加错误参数输入。
go
func NewCodeSkip(code, skip int, text string) error
func NewCodeSkipf(code, skip int, format string, args ...interface{}) error
获取error
中的错误码接口
go
func Code(err error) gcode.Code
当给定的error
参数不带有错误码信息时,该方法返回预定义的错误码gcode.CodeNil
总结
通过这篇文章我们了解到使用GoFrame,如何自定义错误对象、如何忽略部分堆栈信息、如何自定义错误码的返回、如何获取error对象中的错误码。
最后
感谢阅读,欢迎大家三连:点赞、收藏、~~投币~~(关注)!!!
- 爆肝两千字整理《Go学习路线图》| 文末投稿送投影
- grpool goroutine池详解 | 协程管理
- GoFrame如何实现顺序性校验
- GoFrame 如何优雅的共享变量 | Context的使用
- GoFrame 错误处理的常用方法&错误码的使用
- 协同开发时巧用gitignore | 巧用中间件 避免网络请求时携带登录信息
- 【今日总结】Go本地测试 如何解耦 任务拆解&沟通
- GoFrame数据校验之校验结果 | Error接口对象
- GoFrame基于性能测试得知什么场景下使用grpool比较好
- GoFrame数据校验之校验对象
- GoFrame 如何优雅的缓存查询结果
- GoFrame gredis 如何优雅的取值和类型转换
- GoFrame gredis 硬核解析 | DoVar、Conn连接对象、自动序列化
- GoFrame gredis 配置管理 | 配置文件、配置方法的对比
- GoFrame 内存缓存之gcache
- Git 重命名远程分支 | 操作不规范,亲人两行泪。
- 最近的踩坑分享 | 技术文档和需求拆解
- GoFrame 通用类型变量gvar | 对比 interface{}
- GoFrame gtree 使用入门 | 养成读源码的好习惯
- GoFrame gset使用技巧总结 | 出栈、子集判断、序列化、遍历修改