Go:紧急:运行时错误:无效内存地址或 Nil 指针取消引用
问题:
执行Go程序时,遇到以下情况恐慌:
panic: runtime error: invalid memory address or nil pointer dereference [signal 0xb code=0x1 addr=0x38 pc=0x26df] goroutine 1 [running]: main.getBody(0x1cdcd4, 0xf800000004, 0x1f2b44, 0x23, 0xf84005c800, ...) /Users/matt/Dropbox/code/go/scripts/cron/fido.go:65 +0x2bb main.getToken(0xf84005c7e0, 0x10) /Users/matt/Dropbox/code/go/scripts/cron/fido.go:140 +0x156 main.main() /Users/matt/Dropbox/code/go/scripts/cron/fido.go:178 +0x61
尽管尝试捕获错误,但我无法确定原因。该程序在无法访问代码中列出的 API 服务器的计算机上运行,但我预计会出现适当的错误响应。
您能帮我解决此问题吗?
回答:
恐慌可能是由于在检查 client.Do() 中的非零错误之前访问 res.Body 引起的 方法。根据 func (*Client) Do 的文档,如果由客户端策略或 HTTP 协议错误引起,则会返回错误。但是,非 2xx 响应不会导致错误,并且 resp.Body 字段仍然包含非 nil 值。
要解决此问题,请在调用 client.Do() 后立即检查错误:
res, err := client.Do(req) if err != nil { return nil, err } defer res.Body.Close()
以上是恐慌:如何调试'无效内存地址或空指针取消引用”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!