Go 1.20将支持wrapping multiple errors

描述

  Go 近日接受了名为「add support for wrapping multiple errors」的提案。 该项提案对错误处理进行了优化,与 Go 1.13 为错误处理提供的新功能有关:Error Wrapping。引入 Error Wrapping 后,Go 同时为errors包添加了 3 个工具函数,分别是Unwrap、Is和As。 对于「add support for wrapping multiple errors」提案,顾名思义就是一个错误可以包裹多个错误。

Unwrap() []error
提出该提案的开发者表示,重用 Unwrap 避免了与现有 Unwrap 方法产生歧义,从 Unwrap 中返回一个长度为 0 的列表意味着错误没有包裹任何内容。调用方不得修改由 Unwrap 返回的列表,Unwrap 返回的列表不得包含任何 nil 错误。 他还对 errors.Is 和 errors.As 函数进行了更新,实现对 multiple errors 进行 Unwrap 操作。 errors.Join 函数提供了 multierr 的简单实现:
// Join returns an error that wraps the given errors.
// Any nil error values are discarded.
// The error formats as the text of the given errors, separated by newlines.
// Join returns nil if errs contains no non-nil values.
func Join(errs ...error) error


目前该提案已被接受,作者表示将在 Go 1.20 中提供:


函数
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分