Comparaison des messages d'erreur dans Go
Lors du traitement des erreurs en Java, les développeurs s'appuient souvent sur la méthode Exception.GetMessage() pour extraire les descriptions d'erreurs . Golang, cependant, n'a pas de méthode intégrée pour récupérer de tels messages.
Pour résoudre ce problème, les développeurs Go utilisent une approche personnalisée pour comparer les messages d'erreur. Au lieu de stocker les messages dans l'objet d'erreur, ils créent des variables d'erreur au niveau du package qui encapsulent des codes d'erreur ou des descriptions spécifiques :
var errExample = errors.New("this is an example")
Lors du renvoi d'erreurs, les développeurs attribuent ces variables pour indiquer le type spécifique d'erreur qui s'est produite. . L'extrait suivant illustre cette approche :
if some_err := some_package.DoSomething(); some_err != nil { if some_err == errExample { // handle it } }
Dans ce cas, l'instruction if vérifie si l'erreur renvoyée par DoSomething() est identique à la variable errExample. Si tel est le cas, l'erreur est traitée en conséquence.
Pour étendre la portée de ces variables d'erreur, les développeurs peuvent les exporter en dehors du package à l'aide du mot-clé export :
var ErrExample = errors.New("this is an example")
Cela permet au code dans différents packages à comparer avec la variable d'erreur exportée :
if err == somepackage.ErrExample { // handle it }
En suivant cette approche, les développeurs peuvent comparer efficacement les messages d'erreur dans Golang, même si le langage ne dispose pas d'un Méthode GetMessage().
Considérations supplémentaires :
Il est crucial d'éviter de comparer les messages d'erreur avec la chaîne renvoyée par la méthode error.Error(). Cela peut rendre le code fragile, car les messages d'erreur sont susceptibles de changer au fil du temps. Au lieu de cela, il est recommandé d'utiliser les variables d'erreur établies pour garantir la cohérence dans la gestion des erreurs.
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!