Maison > développement back-end > Golang > Go Panic : adresse mémoire invalide ou déréférencement de pointeur nul : comment corriger une gestion incorrecte des erreurs ?

Go Panic : adresse mémoire invalide ou déréférencement de pointeur nul : comment corriger une gestion incorrecte des erreurs ?

DDD
Libérer: 2025-01-05 13:00:40
original
275 Les gens l'ont consulté

Go Panic: Invalid Memory Address or Nil Pointer Dereference: How to Fix Incorrect Error Handling?

Go : Panique : Erreur d'exécution : adresse mémoire non valide ou déréférencement de pointeur nul

Lors de l'exécution d'un programme Go, vous pouvez rencontrer une panique avec le message d'erreur suivant :

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x38 pc=0x26df]
Copier après la connexion

Cette erreur indique souvent un problème dans la façon dont votre programme gère les adresses mémoire ou les pointeurs. Décomposons une cause possible :

Problème : Gestion incorrecte des erreurs

Dans le code Go fourni, il y a un problème dans la fonction getBody lors du traitement de la réponse du HTTP client :

if err != nil {
    return nil, err
}
...
if err != nil {
    return nil, err
}
Copier après la connexion

La première vérification if err != nil a lieu avant d'accéder à la réponse body:

if err != nil {
    return nil, err
}

res, err := client.Do(req)
Copier après la connexion

Cependant, l'instruction defer pour fermer le corps de la réponse (res.Body) s'exécute immédiatement, avant même la vérification des erreurs. Cela pourrait entraîner une tentative prématurée de fermeture du corps et conduire à l'erreur « Adresse mémoire invalide ».

Solution :

Pour résoudre ce problème, déplacez l'erreur vérifier avant d'accéder et de fermer le corps de la réponse :

res, err := client.Do(req)

if err != nil {
    return nil, err
}

defer res.Body.Close()
Copier après la connexion

Ce faisant, le code vérifie correctement toute erreur potentielle avant de travailler avec le corps de la réponse, empêchant ainsi le Erreur "adresse mémoire invalide".

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal