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
Mary-Kate Olsenoriginal
2024-12-18 02:12:10760parcourir

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

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

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()
}

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!

Déclaration:
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