登录
首页 >  Golang >  Go问答

Go 1.13 中的错误

来源:stackoverflow

时间:2024-03-20 08:36:30 221浏览 收藏

Go 1.13 中新增了 errors.Is() 函数,简化了错误处理。该函数检查底层错误值,避免了以前使用 err == nil 检查错误可能遇到的问题。

问题内容

go 1.13 引入了错误的新功能,以简化错误处理。在 go 1.13 之前,我通过以下方式检查代码是否有错误:

if err == nil {
    // ...
}

但是 go 的 errors.is() 帮助我正确地做到了:

这是一种让代码面向未来并防止出现问题的明智方法 由您或您的代码导入的任何包引起的包装 未来的错误。

对于这样的情况来说这是可以的:

if errors.is(err, sql.errnorows) {
   // ...
}

这是否意味着我必须将所有 err == nil 语句更改为:

if errors.Is(err, nil) {
    // ...
}

解决方案


不,你不知道。 error.Is 检查底层错误值。如果某些代码返回 sql.ErrNoRows 并且稍后决定包装该错误,则errors.Is(err, sql.ErrNoRows) 会像以前一样继续工作,但 err == sql.ErrNoRows 将计算为 false。

nil 错误值意味着没有错误,因此没有任何内容可以换行。您无法编写任何代码来更改 err != nil 的计算结果,同时仍然不返回任何错误。只有一种方法可以不返回错误:nil。

不。不需要。当错误与目标匹配时,我们使用errors.Is(),如果它等于目标,则返回true。在您的情况下, err 为 nil ,不能与目标一起使用。

终于介绍完啦!小伙伴们,这篇关于《Go 1.13 中的错误》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>