为了账号安全,请及时绑定邮箱和手机立即绑定

从库包返回错误类型

从库包返回错误类型

Go
慕田峪4524236 2022-09-19 10:17:56
https://github.com/golang/go/wiki/Errors 它说:调用代码将使用类型开关测试特殊类型的errorhttps://github.com/golang/go/wiki/ErrorValueFAQ 它说:如果当前使用 == 比较错误,请使用错误。而是if errors.Is(err, io.ErrUnexpectedEOF)但是,我无法弄清楚如何从我的库包中返回此类错误,以便我的包使用者可以执行错误检查,例如if errors.Is(err, io.ErrUnexpectedEOF)if errors.As(err, &e)请帮忙。PS.由于以下初始问题,上述问题成为可能:从库包中获取最新的惯用错误报告方法对这两个问题的最好回答是 ——https://blog.golang.org/go1.13-errors
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞


如软件包文档中所述:errors


“解开包装”、“是”和“作为”函数处理可能包含其他错误的错误。


因此,关键是要针对您的错误类型实现。这可以通过以下方式之一完成:Unwrap


用于fmt.Errorf%w

return fmt.Errorf("Some error: %w",io.ErrUnexpectedEOF)

返回的错误包装了意外的 EOF 错误,因此 可以解开它的包装。errors.Iserrors.As


使用自定义类型:

type MyErrr struct {

 ...

  err error

}


func (err MyErr) Error() string {...}

func (err MyErr) Unwrap() error {return err.err}

然后:


return MyError{err:io.ErrUnexpectedEOF}

这也将被解开以获得意外的EOF。


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 50 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信