首页 >后端开发 >Golang >Go HTTP 客户端:如何避免'恐慌:运行时错误:无效的内存地址或 nil 指针取消引用”?

Go HTTP 客户端:如何避免'恐慌:运行时错误:无效的内存地址或 nil 指针取消引用”?

DDD
DDD原创
2024-12-26 19:50:09921浏览

Go HTTP Client: How to Avoid

Go: 恐慌:运行时错误:无效的内存地址或 nil 指针取消引用

运行 Go 程序时,可能会由于以下原因发生恐慌无效的内存地址或零指针取消引用。此错误消息通常表示运行时问题,而不是特定的程序错误。

在这种情况下,提供的 Go 代码演示了 HTTP 客户端处理的潜在问题。

问题

代码使用 func (*Client) Do 方法发出 HTTP 请求。但是,在尝试访问响应正文之前,它无法检查客户端返回的错误。

解决方案

根据 func (*Client) 的文档这样做,即使收到非 2xx HTTP 状态代码,也不会导致错误。相反,仅当错误是由客户端策略或 HTTP 协议错误引起时才会返回。

但是,代码会在访问响应正文 (res.Body) 后检查错误。这可能会导致由于无效的内存地址或 nil 指针取消引用而引发错误。

要解决此问题,应修改代码以在访问响应正文之前检查错误,如下所示:

res, err := client.Do(req)

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

以上是Go HTTP 客户端:如何避免'恐慌:运行时错误:无效的内存地址或 nil 指针取消引用”?的详细内容。更多信息请关注PHP中文网其他相关文章!

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