Maison  >  Article  >  développement back-end  >  Comment gérer avec élégance des erreurs spécifiques dans la bibliothèque standard de Go ?

Comment gérer avec élégance des erreurs spécifiques dans la bibliothèque standard de Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-06 17:39:02688parcourir

How to Gracefully Handle Specific Errors in Go's Standard Library?

Comment gérer avec précision des erreurs spécifiques

Lorsque vous travaillez avec les fonctions de bibliothèque standard de Go, vous pouvez rencontrer des situations dans lesquelles vous ne vous souciez que de types spécifiques de erreurs. Par exemple, si vous utilisez rpc.Dial, vous pourriez être intéressé uniquement par la gestion des erreurs liées à la perte ou au refus de connexion.

Utilisation des erreurs.Is et des erreurs.As

Le moyen préféré pour détecter des erreurs spécifiques dans Go moderne est d'utiliser les fonctions erreurs.Is et erreurs.As :

if errors.Is(err, syscall.ECONNREFUSED) {
    // Connection refused error
} else {
    // Some other kind of error
}

Ces fonctions effectuent une comparaison approfondie de l'erreur avec l'erreur cible ou le type d'erreur donné.

Lorsque des types d'erreurs spécifiques sont disponibles

Certaines bibliothèques utilisent des types d'erreurs spécifiques, ce qui simplifie la gestion des erreurs. Par exemple, le package net définit plusieurs types d'erreurs, notamment net.Error pour les erreurs réseau :

if _, ok := err.(net.Error); ok {
    if err.Error() == "connection lost" { ... }
}

Obtention de toutes les erreurs possibles

Détermination de toutes les erreurs possibles renvoyées par une fonction de bibliothèque standard n’est pas simple. La meilleure approche consiste à revoir le code source ou à consulter la documentation godoc de la fonction.

Notes de mise en garde

  • La comparaison de chaînes doit être utilisée avec parcimonie, car elle est fragile et peut conduire à une gestion incorrecte des erreurs.
  • Les erreurs spécifiques renvoyées par une fonction peuvent changer dans les futures versions de Go.

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