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