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

您所在的位置:网站首页 newcode官网 GoFrame错误处理的常用方法&错误码的使用

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

2023-09-18 09:30| 来源: 网络整理| 查看: 265

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情

前言摘要

这篇文章将为大家介绍:GoFrame错误处理的常用方法&错误码的使用。

如何自定义错误对象、如何忽略部分堆栈信息、如何自定义错误码的返回、如何获取error对象中的错误码。

如何进行错误创建?

GoFrame的错误创建有多种方法,用于不同的场景,框架支持还是非常给力的。

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 总结

看到这里大家一定发现了规律:错误码对象的方法和错误对象的方法是一一对应的,错误码对象的方法相比于错误对象的方法,就是多了一个参数输出错误码code的入参而已。

上面我们介绍了如何设置错误码,下面介绍如何获取错误码:

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

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

总结

通过这篇文章我们了解到GoFrame错误处理相关的知识点:如何自定义错误对象、如何忽略部分堆栈信息、如何自定义错误码的返回、如何获取error对象中的错误码。

最后

感谢阅读,欢迎大家三连:点赞、收藏、投币(关注)!!!

8e95dac1fd0b2b1ff51c08757667c47a.gif



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3