一般项目都用这个包来做错误处理

1 常用的API

  1. // 新生成一个错误, 带堆栈信息
  2. func New(message string) error
  3. // 只附加新的信息
  4. func WithMessage(err error, message string) error
  5. // 只附加调用堆栈信息
  6. func WithStack(err error) error
  7. // 同时附加堆栈和信息
  8. func Wrapf(err error, format string, args ...interface{}) error
  9. // 获得最根本的错误原因
  10. func Cause(err error) error

2 用法

  1. if err != nil {
  2. if errors.Is(err, sql.ErrNoRows) {
  3. return nil, errors.Wrapf(ierror.ErrNotFound, "query:%s", query)
  4. }
  5. return nil, errors.Wrapf(ierror.ErrDatabase,
  6. "query: %s error(%v)", query, err)
  7. }