首页 > 后端开发 > Golang > 恐慌:无效的内存地址或 Nil 指针取消引用:如何修复不正确的错误处理?

恐慌:无效的内存地址或 Nil 指针取消引用:如何修复不正确的错误处理?

DDD
发布: 2025-01-05 13:00:40
原创
238 人浏览过

Go Panic: Invalid Memory Address or Nil Pointer Dereference: How to Fix Incorrect Error Handling?

Go: Panic: Runtime Error: Invalid Memory Address or Nil Pointer Dereference

执行 Go 程序时,您可能会遇到恐慌,以下错误消息:

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x38 pc=0x26df]
登录后复制

此错误通常表示您的程序处理方式存在问题内存地址或指针。让我们分解一下可能的原因:

问题:错误处理不正确

在提供的 Go 代码中,getBody 函数在处理来自 HTTP 的响应时存在问题client:

if err != nil {
    return nil, err
}
...
if err != nil {
    return nil, err
}
登录后复制

第一个 if err != nil 检查在访问响应之前发生body:

if err != nil {
    return nil, err
}

res, err := client.Do(req)
登录后复制

但是,用于关闭响应正文 (res.Body) 的 defer 语句会立即执行,甚至在错误检查之前也是如此。这可能会导致过早尝试关闭主体并导致“无效内存地址”错误。

解决方案:

要解决此问题,请移动错误在访问和关闭响应正文之前进行检查:

res, err := client.Do(req)

if err != nil {
    return nil, err
}

defer res.Body.Close()
登录后复制

通过这样做,代码可以在处理响应之前正确检查任何潜在错误body,防止“无效内存地址”错误。

以上是恐慌:无效的内存地址或 Nil 指针取消引用:如何修复不正确的错误处理?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板