欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

golang自定义error

程序员文章站 2022-06-05 08:37:44
系统自身的error处理一般是 errors.New()或fmt.Errorf()等,对一些需要复杂显示的,不太友好,我们可以扩展下error。 error在标准库中被定义为一个接口类型,该接口只有一个Error()方法 那么,自定义error只要拥有Error()方法,就实现了error接口,这里 ......

系统自身的error处理一般是 errors.new()或fmt.errorf()等,对一些需要复杂显示的,不太友好,我们可以扩展下error。

error在标准库中被定义为一个接口类型,该接口只有一个error()方法

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,"无此权限"))
}