Maison >développement back-end >Golang >Go Client HTTP : Comment éviter « panique : erreur d'exécution : adresse mémoire invalide ou déréférencement de pointeur nul » ?

Go Client HTTP : Comment éviter « panique : erreur d'exécution : adresse mémoire invalide ou déréférencement de pointeur nul » ?

DDD
DDDoriginal
2024-12-26 19:50:09870parcourir

Go HTTP Client: How to Avoid

Go : panique : erreur d'exécution : adresse mémoire invalide ou déréférencement de pointeur nul

Lors de l'exécution d'un programme Go, une panique peut survenir en raison de une adresse mémoire invalide ou un déréférencement de pointeur nul. Ce message d'erreur indique souvent un problème d'exécution plutôt qu'un bug de programme spécifique.

Dans ce cas, le code Go fourni démontre des problèmes potentiels avec la gestion du client HTTP.

Le problème

Le code utilise la méthode func (*Client) Do pour effectuer des requêtes HTTP. Cependant, il ne parvient pas à vérifier les erreurs renvoyées par le client avant de tenter d'accéder au corps de la réponse.

La solution

Selon la documentation de func (*Client) Même si un code d'état HTTP non-2xx est reçu, cela n'entraîne pas d'erreur. Au lieu de cela, l'erreur n'est renvoyée que si elle est causée par la politique du client ou une erreur de protocole HTTP.

Le code, cependant, vérifie les erreurs après avoir accédé au corps de la réponse (res.Body). Cela peut entraîner une erreur en raison d'une adresse mémoire non valide ou d'un déréférencement de pointeur nul.

Pour résoudre ce problème, le code doit être modifié pour vérifier les erreurs avant d'accéder au corps de la réponse, comme ceci :

res, err := client.Do(req)

if err != nil {
    return nil, err
}
defer res.Body.Close()

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