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,"无此权限"))
}
相关文章
相关标签/搜索