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。
- 1 回答
- 0 关注
- 61 浏览
添加回答
举报
0/150
提交
取消