Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mencegah 'ralat masa jalan: alamat memori tidak sah atau penolakan penunjuk nil' dalam My Go Web Crawler?

Bagaimanakah Saya Boleh Mencegah 'ralat masa jalan: alamat memori tidak sah atau penolakan penunjuk nil' dalam My Go Web Crawler?

DDD
Lepaskan: 2024-12-09 02:24:14
asal
971 orang telah melayarinya

How Can I Prevent

Memahami "Ralat Masa Jalanan: alamat memori tidak sah atau penyahrujukan penunjuk tiada" Isu

Dalam pengaturcaraan Go, "ralat masa jalan: alamat memori tidak sah atau penolakan penunjuk tiada" sering berlaku apabila mengakses atau membatalkan rujukan memori yang tidak sah. Ralat ini mungkin timbul dalam pelbagai konteks, termasuk operasi rangkaian seperti permintaan HTTP.

Menyelesaikan masalah Webcrawler

Mengenai webcrawler anda, ralat itu berkemungkinan berkaitan dengan mengakses badan respons (resp.Body) tanpa mula-mula menyemak ralat. Dalam fungsi basicFetcher, sebagai contoh, jika http.Get mengembalikan ralat, pembolehubah resp akan menjadi sifar, dan percubaan berikutnya untuk mengakses resp.Body akan gagal disebabkan oleh penyahrujukan penunjuk nil.

Pengendalian Ralat yang Betul

Untuk menangani isu ini, adalah penting untuk mengendalikan ralat dengan sewajarnya. Pertimbangkan untuk mengubah suai fungsi basicFetcher anda seperti berikut:

func basicFetcher(uri string, c chan int) {
    resp, err := http.Get(uri)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
    _, err = ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println(err)
        return
    }
    c <- resp.StatusCode
}
Salin selepas log masuk

Sekarang, jika http.Get atau ioutil.ReadAll menghadapi ralat, fungsi itu akan kembali dengan anggun, menghalang ralat penyahrujukan nol.

Mengembalikan Keputusan Ralat

Seperti yang dicadangkan oleh twotwotwo, adalah amalan yang baik untuk kembalikan pasangan (hasil, ralat) daripada fungsi anda. Ini membolehkan anda mengendalikan ralat dan menamatkan fungsi jika perlu. Dengan mengembalikan ralat, anda boleh menyediakan lebih banyak konteks untuk ralat dan mendayakan pengendalian ralat yang lebih baik dalam fungsi utama anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencegah 'ralat masa jalan: alamat memori tidak sah atau penolakan penunjuk nil' dalam My Go Web Crawler?. 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