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

相关文章
|
3月前
|
存储 安全 Java
如何使用泛型来避免`ArrayStoreException`异常?
使用泛型可以避免`ArrayStoreException`异常,通过在编译时检查类型安全,确保数组中只存储正确类型的对象,从而防止运行时错误。泛型提供了一种更安全、更灵活的编程方式。
30 4
|
6月前
|
UED Python
Python装饰器怎么做重试机制
**使用Python装饰器实现的重试机制**简化了对可能出现临时故障的函数的处理,增强系统稳定性和用户体验。文中提供了一个简单的装饰器示例,允许在达到最大重试次数前,按设定间隔自动重试失败的函数调用。这种机制在分布式系统、网络通信中尤为重要,可应对网络波动、资源紧张等问题,避免服务中断。通过添加`@retry`装饰器,无需大量修改代码即可为函数添加重试功能。
|
JSON Java API
优雅地进行全局异常处理、统一返回值封装、自定义异常错误码——Graceful-Response推荐
Graceful Response是一个Spring Boot体系下的优雅响应处理器,提供一站式统一返回值封装、全局异常处理、自定义异常错误码等功能,使用Graceful Response进行web接口开发不仅可以节省大量的时间,还可以提高代码质量,使代码逻辑更清晰。
363 0
|
8月前
|
Python
Python异常捕获和处理方式
Python异常捕获和处理方式
59 0
一文搞懂Go语言错误处理【异常捕获、异常抛出】
一文搞懂Go语言错误处理【异常捕获、异常抛出】
一文搞懂Go语言错误处理【异常捕获、异常抛出】
|
8月前
|
JSON Java 数据格式
SpringBoot - 错误处理机制与自定义错误处理实现
SpringBoot - 错误处理机制与自定义错误处理实现
66 0
|
数据采集 数据安全/隐私保护
如何使用异常处理机制捕获和处理请求失败的情况
在爬虫开发中,我们经常会遇到请求失败的情况,比如网络超时、连接错误、服务器拒绝等。这些情况会导致我们无法获取目标网页的内容,从而影响爬虫的效果和效率。为了解决这个问题,我们需要使用异常处理机制来捕获和处理请求失败的情况,从而提高爬虫的稳定性和稳定性。
136 0
如何使用异常处理机制捕获和处理请求失败的情况
|
存储
Yii2进行数据验证的时候,如何自定义中文错误信息内容?底层原理是什么?
Yii2进行数据验证的时候,如何自定义中文错误信息内容?底层原理是什么?
198 0
|
JSON Java 数据格式
错误处理原理 & amp ;定制错误页面|学习笔记
快速学习错误处理原理 & amp ;定制错误页面
错误处理原理 & amp ;定制错误页面|学习笔记
GO语言基础教程20——Error接口和错误处理
Go 语言中把错误当成一种特殊的值来处理,不支持其他语言中使用try/catch捕获异常的方式。