首頁 > 軟體

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

2022-06-25 14:00:03

前言

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


IT145.com E-mail:sddin#qq.com