GoFrame錯誤處理常用方法及錯誤碼使用示例

前言

這篇文章將為大傢介紹: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錯誤處理錯誤碼的資料請關註WalkonNet其它相關文章!

推薦閱讀: