Rumah > pembangunan bahagian belakang > Golang > Pergi Klien HTTP: Bagaimana untuk Mengelakkan 'panik: ralat masa jalan: alamat memori tidak sah atau tiada rujukan penuding'?

Pergi Klien HTTP: Bagaimana untuk Mengelakkan 'panik: ralat masa jalan: alamat memori tidak sah atau tiada rujukan penuding'?

DDD
Lepaskan: 2024-12-26 19:50:09
asal
968 orang telah melayarinya

Go HTTP Client: How to Avoid

Go: panik: ralat masa jalan: alamat memori tidak sah atau penolakan penunjuk tiada

Apabila menjalankan program Go, panik boleh berlaku disebabkan oleh alamat ingatan yang tidak sah atau penolakan penunjuk nol. Mesej ralat ini selalunya menunjukkan isu masa jalan dan bukannya pepijat program tertentu.

Dalam kes ini, kod Go yang disediakan menunjukkan potensi masalah dengan pengendalian klien HTTP.

Isunya

Kod menggunakan kaedah func (*Client) Do untuk membuat permintaan HTTP. Walau bagaimanapun, ia gagal menyemak ralat yang dikembalikan oleh klien sebelum cuba mengakses badan respons.

Penyelesaian

Menurut dokumentasi untuk func (*Pelanggan) Lakukan, walaupun kod status HTTP bukan 2xx diterima, ia tidak menyebabkan ralat. Sebaliknya, ralat hanya dikembalikan jika ia disebabkan oleh dasar klien atau ralat protokol HTTP.

Kod, walau bagaimanapun, menyemak ralat selepas mengakses badan respons (res.Body). Ini boleh menyebabkan ralat dilemparkan disebabkan oleh alamat memori yang tidak sah atau penyahrujukan sifar.

Untuk menyelesaikan isu ini, kod harus diubah suai untuk menyemak ralat sebelum mengakses badan respons, seperti:

res, err := client.Do(req)

if err != nil {
    return nil, err
}
defer res.Body.Close()
Salin selepas log masuk

Atas ialah kandungan terperinci Pergi Klien HTTP: Bagaimana untuk Mengelakkan 'panik: ralat masa jalan: alamat memori tidak sah atau tiada rujukan penuding'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan