GoFrame错误处理常用方法及错误码使用示例

作者:王中阳Go 时间:2024-04-25 15:30:35 

前言

这篇文章将为大家介绍: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

来源:https://juejin.cn/post/7112428421392629773

标签:GoFrame,错误处理,错误码
0
投稿

猜你喜欢

  • js鼠标悬浮出现遮罩层的方法

    2024-02-23 10:37:43
  • Mysql8.0递归查询的简单用法示例

    2024-01-22 16:06:42
  • mysql 无限级分类实现思路

    2024-01-19 09:18:35
  • Oracle数据表中的死锁情况解决方法

    2024-01-15 11:23:01
  • Go中时间与时区问题的深入讲解

    2024-02-19 23:34:55
  • python 如何快速复制序列

    2022-12-04 05:20:36
  • 详解Mysql基础语法的使用

    2024-01-28 07:50:05
  • 利用Seaborn绘制20个精美的pairplot图

    2023-08-15 20:09:15
  • 用"表情符号"做植入广告 是否可行呢?

    2009-02-23 13:07:00
  • 浅谈Python中的异常和JSON读写数据的实现

    2021-02-07 10:41:16
  • PHP+MYSQL不恶补十句话

    2009-12-02 10:09:00
  • python静态方法实例

    2023-02-17 12:03:22
  • 详解MySQL从入门到放弃-安装

    2024-01-12 16:24:50
  • 开心网让人很不开心

    2009-04-05 15:56:00
  • 关于 Web 字体:现状与未来[译]

    2009-11-24 13:50:00
  • js/jq仿window文件夹移动/剪切/复制等操作代码

    2024-04-16 09:50:01
  • JS动态添加与删除select中的Option对象(示例代码)

    2023-09-17 02:15:31
  • Python去除列表中重复元素的方法

    2021-06-23 20:44:27
  • 图文详解SQL Server 2008R2使用教程

    2024-01-19 10:52:38
  • pytorch通过训练结果的复现设置随机种子

    2021-04-19 07:58:53
  • asp之家 网络编程 m.aspxhome.com