Rumah > pembangunan bahagian belakang > Golang > Go Panic: Alamat Memori Tidak Sah atau Penolakan Penunjuk Nil: Bagaimana untuk Membetulkan Pengendalian Ralat yang Salah?

Go Panic: Alamat Memori Tidak Sah atau Penolakan Penunjuk Nil: Bagaimana untuk Membetulkan Pengendalian Ralat yang Salah?

DDD
Lepaskan: 2025-01-05 13:00:40
asal
239 orang telah melayarinya

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

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

Apabila melaksanakan program Go, anda mungkin mengalami panik dengan mesej ralat berikut:

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x38 pc=0x26df]
Salin selepas log masuk

Ralat ini selalunya menunjukkan isu dalam cara program anda mengendalikan alamat memori atau penunjuk. Mari kita pecahkan punca yang mungkin:

Masalah: Pengendalian Ralat Salah

Dalam kod Go yang disediakan, terdapat isu dalam fungsi getBody semasa mengendalikan respons daripada HTTP pelanggan:

if err != nil {
    return nil, err
}
...
if err != nil {
    return nil, err
}
Salin selepas log masuk

Yang pertama if err != semakan tiada berlaku sebelum mengakses respons body:

if err != nil {
    return nil, err
}

res, err := client.Do(req)
Salin selepas log masuk

Walau bagaimanapun, pernyataan tangguh untuk menutup badan respons (res.Body) dilaksanakan serta-merta, walaupun sebelum semakan ralat. Ini boleh mengakibatkan percubaan pramatang untuk menutup badan dan membawa kepada ralat "alamat memori tidak sah".

Penyelesaian:

Untuk menyelesaikan isu ini, alihkan ralat semak sebelum mengakses dan menutup badan respons:

res, err := client.Do(req)

if err != nil {
    return nil, err
}

defer res.Body.Close()
Salin selepas log masuk

Dengan berbuat demikian, kod menyemak dengan betul sebarang kemungkinan ralat sebelum bekerja dengan respons badan, menghalang ralat "alamat memori tidak sah".

Atas ialah kandungan terperinci Go Panic: Alamat Memori Tidak Sah atau Penolakan Penunjuk Nil: Bagaimana untuk Membetulkan Pengendalian Ralat yang Salah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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