Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyelesaikan Ralat 'Alamat Memori Tidak Sah atau Penolakan Penunjuk Nil' dalam Go Web Crawlers?

Bagaimana untuk Menyelesaikan Ralat 'Alamat Memori Tidak Sah atau Penolakan Penunjuk Nil' dalam Go Web Crawlers?

Susan Sarandon
Lepaskan: 2024-12-04 18:25:16
asal
1034 orang telah melayarinya

How to Troubleshoot

Alamat Memori Tidak Sah atau Ralat Penolak Rujukan Penunjuk Nil: Menyelesaikan Masalah untuk Perayap Web dalam Go

Apabila menghadapi "ralat masa jalan: alamat memori tidak sah atau nil pointer dereference" ralat dalam Go, adalah penting untuk menentukan di mana isu itu terletak. Mari kita mendalami senario biasa yang dihadapi oleh pemula perangkak web.

Kod yang disediakan menggunakan dua fungsi untuk merangkak web, advancedFetcher dan basicFetcher. Kedua-dua fungsi membuat permintaan HTTP menggunakan utiliti makeGetRequest. Walau bagaimanapun, mereka boleh mencetuskan ralat yang dinyatakan di atas dalam keadaan tertentu.

Memahami Masalah

Pakar menyarankan agar berhati-hati memeriksa ralat di seluruh kod. Selepas melaksanakan amalan ini, anda mungkin masih menghadapi ralat yang sama. Mari kita periksa perkara yang berlaku lebih dekat.

Dalam fungsi basicFetcher, ioutil.ReadAll(resp.Body) digunakan selepas permintaan dibuat. Jika permintaan gagal (iaitu, err != nil), kandungan masih dibaca, yang boleh membawa kepada ralat yang dipersoalkan kerana resp.Body mungkin tiada dalam situasi ini.

Menyelesaikan Isu

Untuk menangani masalah ini, pertimbangkan untuk mengubah suai fungsi basicFetcher untuk mengembalikan tupel (hasil, ralat). Ini membolehkan penamatan yang anggun sekiranya berlaku ralat. Berikut ialah contoh semakan:

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

Petua Tambahan

  • Semak Ralat: Periksa ralat dengan teliti pada setiap langkah, terutamanya apabila mengambil dan membaca jawapan.
  • Gunakan Idiomatik Go: Gunakan amalan Go idiomatik, seperti mengembalikan tupel ralat untuk mengendalikan kemungkinan ralat dengan anggun.
  • Kendalikan Ralat Yang Dijangka: Jangka dan kendalikan ralat khusus yang mungkin berlaku semasa merangkak web, seperti sebagai ralat HTTP atau tamat masa sambungan.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Alamat Memori Tidak Sah atau Penolakan Penunjuk Nil' dalam Go Web Crawlers?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan