error接口
error类型本身就是一个预定义好的接口, 可以自定义error结构体,只需要实现error接口。
|
|
errors包
|
|
自定义error
|
|
error附加信息
虽然Go语言对错误的设计非常简洁,但是对于我们开发者来说,很明显是不足的,比如我们需要知道出错的更多信息,在什么文件的,哪一行代码?进一步知道调用的堆栈,只有这样我们才更容易的定位问题。
如果要解决以上的问题,那么首先我们必须再继续扩充我们的errorString,再增加一些字段来存储更多的信息。比如我们要记录堆栈信息。github.com/pkg/errors这个库提供了对应的解决方案。
|
|
github.com/pkg/errors提供了几个函数可以选择:12345678//只附加新的信息func WithMessage(err error, message string) error//只附加调用堆栈信息func WithStack(err error) error//同时附加堆栈和信息func Wrap(err error, message string) error