Maison > développement back-end > Golang > Dois-je fermer l'objet de réponse HTTP après une erreur « http.Get() » ?

Dois-je fermer l'objet de réponse HTTP après une erreur « http.Get() » ?

Mary-Kate Olsen
Libérer: 2024-12-18 02:12:10
original
761 Les gens l'ont consulté

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

Devons-nous fermer l'objet de réponse si une erreur se produit lors de l'appel de http.Get (url) ?

Lors de l'appel de http.Get (url), vous pouvez rencontrer un scénario dans lequel une erreur se produit lors de la demande. Dans de tels cas, la question se pose : est-il indispensable de fermer l'objet réponse ?

Réponse :

Selon le principe général de programmation, si une fonction renvoie plusieurs valeurs , y compris une erreur, vous devez d'abord inspecter la valeur de l'erreur. S'il y a une erreur (err != nil), vous devez prendre les mesures appropriées et ne continuer que si la valeur de l'err est nulle.

Dans le cas de http.Get(), il adhère à ce concept. Si une erreur se produit, il renvoie une réponse nulle, comme :

return nil, someError
Copier après la connexion

Par conséquent, vous devez la gérer comme suit :

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

defer res.Body.Close()
// Read/work with body
Copier après la connexion

Il est à noter que même si une erreur se produit et qu'un une réponse non nulle est renvoyée en raison d'échecs de redirection, vous n'avez toujours pas besoin de fermer le corps de la réponse. Cependant, si vous insistez pour le faire, vous pouvez utiliser des vérifications conditionnelles telles que :

if res != nil {
    defer res.Body.Close()
}
Copier après la connexion

La documentation de http.Response garantit que la propriété Body ne sera jamais nulle, quelle que soit la présence ou l'absence de données de réponse. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal