Golang 小技巧:使用 errors.Join 合并多个错误
【摘要】 在 Go 中,有时候一个操作可能产生多个错误,但函数最终只能返回一个 error。这时候可以使用 errors.Join 把多个错误合并起来。例如:err1 := errors.New("数据库关闭失败")err2 := errors.New("日志写入失败")err := errors.Join(err1, err2)fmt.Println(err)输出类似:数据库关闭失败日志写入失败实际...
在 Go 中,有时候一个操作可能产生多个错误,但函数最终只能返回一个 error。
这时候可以使用 errors.Join 把多个错误合并起来。
例如:
err1 := errors.New("数据库关闭失败")
err2 := errors.New("日志写入失败")
err := errors.Join(err1, err2)
fmt.Println(err)
输出类似:
数据库关闭失败
日志写入失败
实际开发中,可以用于统一处理多个清理操作:
func cleanup() error {
var errs []error
if err := closeDB(); err != nil {
errs = append(errs, err)
}
if err := closeCache(); err != nil {
errs = append(errs, err)
}
return errors.Join(errs...)
}
如果 errs 为空:
errors.Join(errs...)
会直接返回 nil,所以不需要额外判断。
而且合并后的错误依然可以使用:
errors.Is(err, target)
判断其中是否包含指定错误。
小结
当一个函数可能同时产生多个错误时,可以使用:
return errors.Join(errs...)
相比只返回最后一个错误,这种方式可以保留更多错误信息,特别适合资源清理、批量任务等场景。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)