首頁 >後端開發 >Golang >恐慌:如何調試'無效記憶體位址或空指標取消引用”錯誤?

恐慌:如何調試'無效記憶體位址或空指標取消引用”錯誤?

Linda Hamilton
Linda Hamilton原創
2024-12-21 04:45:10699瀏覽

Go Panic: How to Debug

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn