首页 >后端开发 >Golang >发生 `http.Get()` 错误后我应该关闭 HTTP 响应对象吗?

发生 `http.Get()` 错误后我应该关闭 HTTP 响应对象吗?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-18 02:12:10761浏览

Should I Close the HTTP Response Object After an `http.Get()` Error?

调用 http.Get(url) 时出错,是否需要关闭 Response 对象?

调用 http.Get 时(url),你可能会遇到请求过程中出现错误的场景。在这种情况下,问题就出现了:关闭响应对象是否有必要?

答案:

根据一般的编程原理,如果一个函数返回多个值,包括错误,您应该首先检查错误值。如果出现错误 (err != nil),您应该采取适当的操作,并且仅当 err 值为 nil 时才继续。

在 http.Get() 的情况下,它遵循这个概念。如果发生错误,它会返回 nil 响应,例如:

return nil, someError

因此,您应该按如下方式处理:

res, err := http.Get(url)
if err != nil {
    log.Printf("Error: %s\n", err)
    return
}

defer res.Body.Close()
// Read/work with body

值得注意的是,即使发生错误并且由于重定向失败而返回非零响应,您仍然不需要关闭响应正文。但是,如果您坚持这样做,您可以使用条件检查,例如:

if res != nil {
    defer res.Body.Close()
}

http.Response 的文档确保 Body 属性永远不会为零,无论是否存在响应数据.

以上是发生 `http.Get()` 错误后我应该关闭 HTTP 响应对象吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn