golang自定義error

系統自身的error處理通常是 errors.New()或fmt.Errorf()等,對一些須要複雜顯示的,不太友好,咱們能夠擴展下error。json

error在標準庫中被定義爲一個接口類型,該接口只有一個Error()方法code

type error interface {
  Error() string
}

那麼,自定義error只要擁有Error()方法,就實現了error接口,這裏咱們用結構體來擴展接口

package errors

import (
    "encoding/json"
)

type Err struct {
    Code int
    Msg   string
}

func (e *Err) Error() string {
    err, _ := json.Marshal(e)
    return string(err)
}

func New(code int, msg string) *Err {
    return &Err{
        Code: code,
        Msg:   msg,
    }
}

調用

func main(){
    fmt.Println(errors.New(401,"無此權限"))
}
相關文章
相關標籤/搜索