Categories: GoFrame 教程

GoFrame 错误码特性-错误码使用

创建带错误码的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(10000, "", nil), "My Error")
 fmt.Println(err.Error())
 fmt.Println(gerror.Code(err))

 // Output:
 // My Error
 // 10000
}

func ExampleNewCodef() {
 err := gerror.NewCodef(gcode.New(10000, "", nil), "Its %s", "My Error")
 fmt.Println(err.Error())
 fmt.Println(gerror.Code(err).Code())

 // Output:
 // Its My Error
 // 10000
}

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(10000, "", nil), err1, "Custom Error")
 fmt.Println(err2.Error())
 fmt.Println(gerror.Code(err2).Code())

 // Output:
 // Custom Error: permission denied
 // 10000
}

func ExampleWrapCodef() {
 err1 := errors.New("permission denied")
 err2 := gerror.WrapCodef(gcode.New(10000, "", nil), err1, "Its %s", "Custom Error")
 fmt.Println(err2.Error())
 fmt.Println(gerror.Code(err2).Code())

 // Output:
 // Its Custom Error: permission denied
 // 10000
}

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

andy

前端小白,在Web176教程网这个平台跟大家一起学习,加油!

Share
Published by
andy

Recent Posts

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago

Vue3:手动清理keep-alive组件缓存的方法

Vue3中手动清理keep-a…

1 月 ago