登录
首页 >  Golang >  Go问答

行关闭在错误检查之前的延迟会有什么结果?

来源:stackoverflow

时间:2024-02-15 08:00:24 106浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《行关闭在错误检查之前的延迟会有什么结果?》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

这是典型的用例。

rows, err := db.query(`...`, ...)
if err != nil{
    return
}
defer rows.close()
...

这是我想要使用的。

rows, err := db.Query(`...`, ...)
defer rows.Close()
if err != nil{
    return
}
...

我会惊慌吗?


解决方案


它可能会也可能不会恐慌。一般规则是始终首先检查返回的错误,如果是 nil,则才继续使用其他返回值。

如果出现非 nil 错误,其他返回值都是“未定义”,它们可能是 nil,因此调用它们的方法可能很容易导致运行时恐慌。

当然可能存在通常记录在案的例外情况,例如如果以下重定向失败,http.Get() 可能会返回错误和非 nil 响应,并提供有关错误的详细信息。但这种情况很少见,应该始终记录下来。 DB.Query() 没有记录此类偏差,因此您不能依赖它。

查看相关:Do we need to close the response object if an error occurs while calling http.Get(url)?

以上就是《行关闭在错误检查之前的延迟会有什么结果?》的详细内容,更多关于的资料请关注golang学习网公众号!

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