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