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