从库包返回错误类型

https://github.com/golang/go/wiki/Errors 它说:

调用代码将使用类型开关测试特殊类型的error

https://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


慕田峪4524236
浏览 89回答 1
1回答

神不在的星期二

如软件包文档中所述:errors“解开包装”、“是”和“作为”函数处理可能包含其他错误的错误。因此,关键是要针对您的错误类型实现。这可以通过以下方式之一完成:Unwrap用于fmt.Errorf%wreturn 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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go