Rumah > pembangunan bahagian belakang > Golang > Patutkah Saya Menutup Objek Respons HTTP Selepas Ralat `http.Get()`?

Patutkah Saya Menutup Objek Respons HTTP Selepas Ralat `http.Get()`?

Mary-Kate Olsen
Lepaskan: 2024-12-18 02:12:10
asal
760 orang telah melayarinya

Should I Close the HTTP Response Object After an `http.Get()` Error?

Adakah Kita Perlu Menutup Objek Respons Jika Ralat Berlaku Semasa Memanggil http.Get(url)?

Apabila menggunakan http.Get (url), anda mungkin menghadapi senario di mana ralat berlaku semasa permintaan. Dalam kes sedemikian, persoalan timbul: adakah penting untuk menutup objek tindak balas?

Jawapan:

Mengikut prinsip pengaturcaraan umum, jika fungsi mengembalikan berbilang nilai , termasuk ralat, anda harus memeriksa nilai ralat terlebih dahulu. Jika terdapat ralat (err != nil), anda harus mengambil tindakan yang sewajarnya dan hanya meneruskan jika nilai err adalah nil.

Dalam kes http.Get(), ia mematuhi konsep ini. Jika ralat berlaku, ia mengembalikan respons sifar, seperti:

return nil, someError
Salin selepas log masuk

Oleh itu, anda harus mengendalikannya seperti berikut:

res, err := http.Get(url)
if err != nil {
    log.Printf("Error: %s\n", err)
    return
}

defer res.Body.Close()
// Read/work with body
Salin selepas log masuk

Perlu diperhatikan bahawa walaupun ralat berlaku dan respons bukan nol dikembalikan kerana kegagalan ubah hala, anda masih tidak perlu menutup badan respons. Walau bagaimanapun, jika anda berkeras untuk berbuat demikian, anda boleh menggunakan semakan bersyarat seperti:

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

Dokumentasi http.Response memastikan bahawa sifat Body tidak akan menjadi sifar, tanpa mengira kehadiran atau ketiadaan data respons .

Atas ialah kandungan terperinci Patutkah Saya Menutup Objek Respons HTTP Selepas Ralat `http.Get()`?. 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