GoFrame 错误处理的常用方法&错误码的使用

简介: 前言摘要这篇文章将为大家介绍:GoFrame 错误处理的常用方法&错误码的使用。如何自定义错误对象、如何忽略部分堆栈信息、如何自定义错误码的返回、如何获取error对象中的错误码。

前言摘要
这篇文章将为大家介绍:GoFrame 错误处理的常用方法&错误码的使用。如何自定义错误对象、如何忽略部分堆栈信息、如何自定义错误码的返回、如何获取error对象中的错误码。
错误创建
New/Newf
用于创建一个自定义错误信息的error对象,并包含堆栈信息。
New(text string) error
Newf(format string, args ...interface{}) error

Wrap/Wrapf
用于包裹其他错误error对象,构造成多级的错误信息,包含堆栈信息。
func Wrap(err error, text string) error
func Wrapf(err error, format string, args ...interface{}) error

NewSkip/NewSkipf
用于创建一个自定义错误信息的error对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。高级功能,一般开发者很少用得到。
func NewSkip(skip int, text string) error
func NewSkipf(skip int, format string, args ...interface{}) error

错误码使用
错误码相关方法概览
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对象,并包含堆栈信息,并增加错误码对象的输入。
NewCode(code gcode.Code, text ...string) error
NewCodef(code gcode.Code, format string, args ...interface{}) error

示例代码
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对象,构造成多级的错误信息,包含堆栈信息,并增加错误码参数的输入。
WrapCode(code gcode.Code, err error, text ...string) error
WrapCodef(code gcode.Code, err error, format string, args ...interface{}) error

示例代码
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对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略),并增加错误参数输入。
func NewCodeSkip(code, skip int, text string) error
func NewCodeSkipf(code, skip int, format string, args ...interface{}) error

获取error中的错误码接口
func Code(err error) gcode.Code

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

相关文章
|
6月前
|
中间件
Koa2 的错误处理机制是什么?如何捕获错误?
Koa2 的错误处理机制是什么?如何捕获错误?
147 0
|
1月前
|
Prometheus 监控 Cloud Native
调用淘宝 API 时如何处理错误信息?
调用淘宝API时,需熟悉其错误码体系,处理客户端(如参数错误、权限不足)和服务器(如内部错误、网络问题)错误,编写错误处理逻辑,并进行充分测试与监控,确保API调用稳定可靠。
|
4月前
|
文字识别 Java
文本,文字识别12,接口返回值和异常封装,一个好的接口,应该包括,错误码,提示信息,返回的数据,应该知道出错,错在哪里,抛出业务异常应该怎样解决?出现业务异常的时候,抛出业务异常,全局异常处理
文本,文字识别12,接口返回值和异常封装,一个好的接口,应该包括,错误码,提示信息,返回的数据,应该知道出错,错在哪里,抛出业务异常应该怎样解决?出现业务异常的时候,抛出业务异常,全局异常处理
|
JSON Java API
优雅地进行全局异常处理、统一返回值封装、自定义异常错误码——Graceful-Response推荐
Graceful Response是一个Spring Boot体系下的优雅响应处理器,提供一站式统一返回值封装、全局异常处理、自定义异常错误码等功能,使用Graceful Response进行web接口开发不仅可以节省大量的时间,还可以提高代码质量,使代码逻辑更清晰。
347 0
|
6月前
|
SQL API 数据库
优雅地进行入参数据校验:场景和处理方式
在日常的开发工作中,入参数据校验是确保程序健壮性的关键步骤之一,我们需要确保请求中的数据类型、格式和取值范围符合要求,以保证接口的安全性和稳定性,还有就是传递给方法或函数的数据需要满足一定的规则和要求,以保证程序的正常运行和数据的有效处理。那么本文就来分享一下在哪些场景下进行入参数据校验,并分享一些优雅的处理方式,以提高代码的可读性、扩展性和复用性。
102 3
优雅地进行入参数据校验:场景和处理方式
|
6月前
|
JSON 测试技术 API
记一个低级错误导致的接口失败
记一个低级错误导致的接口失败
|
数据采集 数据安全/隐私保护
如何使用异常处理机制捕获和处理请求失败的情况
在爬虫开发中,我们经常会遇到请求失败的情况,比如网络超时、连接错误、服务器拒绝等。这些情况会导致我们无法获取目标网页的内容,从而影响爬虫的效果和效率。为了解决这个问题,我们需要使用异常处理机制来捕获和处理请求失败的情况,从而提高爬虫的稳定性和稳定性。
124 0
如何使用异常处理机制捕获和处理请求失败的情况
|
JSON 前端开发 数据格式
前端对接口参数错误如何解决
前端对接口参数错误如何解决
91 0
|
JSON 前端开发 数据格式
前端对接口参数错误如何解决
前端对接口参数错误如何解决
125 0
GoFrame错误处理的常用方法&错误码的使用
这篇文章将为大家介绍:GoFrame错误处理的常用方法&错误码的使用。 如何自定义错误对象、如何忽略部分堆栈信息、如何自定义错误码的返回、如何获取error对象中的错误码。
267 0