登录
首页 >  Golang >  Go问答

处理 defer 语句中的错误的方法

来源:stackoverflow

时间:2024-02-25 19:48:27 172浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《处理 defer 语句中的错误的方法》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

所以我有这个:

defer res.body.close()

问题在于此调用可能会返回非零错误。所以我认为正确捕获错误的唯一方法就是这样

defer func(){
  if err := defer res.Body.Close(); err !=nil {
     log.Error(err);
  }
}()

还有别的办法吗?


解决方案


你不能真正做出这样的声明 err : = defer res.body.close () 像这样。因此该声明无效。 以下是有效的。

defer func(){
  if err := res.body.close(); err !=nil {
     log.error(err);
  }
}()

此外,还有另一种方法可以处理 defer 语句中的错误,如下所示。

func do() error {
  res, err := http.Get("http://notexists")
  if res != nil {
    defer res.Body.Close()
  }
  if err != nil {
    return err
  }
  // ..code...
  return nil
}

通过上面的代码,当出现错误时,代码将返回错误,否则,当 defer 中的 func 返回时,它将关闭 res.body。

您可以访问https://blog.learngoprogramming.com/5-gotchas-of-defer-in-go-golang-part-iii-36a1ab3d6ef1了解更多信息。

理论要掌握,实操不能落!以上关于《处理 defer 语句中的错误的方法》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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