首頁 >後端開發 >Golang >Go HTTP 用戶端:如何避免「恐慌:運行時錯誤:無效的記憶體位址或 nil 指標取消引用」?

Go HTTP 用戶端:如何避免「恐慌:運行時錯誤:無效的記憶體位址或 nil 指標取消引用」?

DDD
DDD原創
2024-12-26 19:50:09920瀏覽

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