目录
  • 前言
  • 错误创建
    • New/Newf
    • Wrap/Wrapf
    • NewSkip/NewSkipf
  • 错误码使用
    • 错误码相关方法概览
    • NewCode/NewCodef
      • 示例代码
    • WrapCode/WrapCodef
      • 示例代码
    • NewCodeSkip/NewCodeSkipf
    • 获取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

        总结

        通过这篇文章我们了解到使用GoFrame,如何自定义错误对象、如何忽略部分堆栈信息、如何自定义错误码的返回、如何获取error对象中的错误码。

        以上就是GoFrame错误处理常用方法及错误码使用示例的详细内容,更多关于GoFrame错误处理错误码的资料请关注其它相关文章!

        声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。