Maison > développement back-end > Golang > Comment puis-je comparer de manière fiable les erreurs dans Go ?

Comment puis-je comparer de manière fiable les erreurs dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-27 13:46:11
original
607 Les gens l'ont consulté

How Can I Reliably Compare Errors in Go?

Comparaison des messages d'erreur dans Go

Dans Go, les erreurs sont simplement des valeurs qui implémentent l'interface d'erreur. Cela signifie que les erreurs peuvent être comparées à l'aide des opérateurs d'égalité standard (== et !=). Cependant, il n'est généralement pas recommandé de comparer les erreurs par leur représentation sous forme de chaîne renvoyée par la méthode Error(). En effet, la représentation sous forme de chaîne peut changer avec le temps, ce qui peut rendre votre code fragile.

Un moyen plus fiable de comparer les erreurs consiste à utiliser une variable au niveau du package qui stocke l'erreur attendue. Cette variable peut être utilisée pour comparer l'erreur renvoyée par une fonction. Par exemple :

package mypkg

import (
    "errors"
)

// ErrExample is an example error.
var ErrExample = errors.New("this is an example")

// DoSomething returns an error if something goes wrong.
func DoSomething() error {
    // ...

    // If something goes wrong, return the error.
    return ErrExample
}
Copier après la connexion

Pour comparer l'erreur renvoyée par DoSomething(), vous pouvez utiliser le code suivant :

if err := DoSomething(); err != nil {
    // Handle the error.
}
Copier après la connexion

Si l'erreur renvoyée par DoSomething() est égale à ErrExample, alors l'instruction if sera exécutée.

Vous pouvez également exporter la variable au niveau du package si le code en dehors du package doit accéder à l'erreur. Par exemple :

package mypkg

import (
    "errors"
)

// ErrExample is an example error.
var ErrExample = errors.New("this is an example")

// Export the error.
var ErrExample = ErrExample
Copier après la connexion

Pour utiliser l'erreur exportée, vous pouvez utiliser le code suivant :

if err := somepackage.DoSomething(); err != nil {
    // Handle the error.
}
Copier après la connexion

Si l'erreur renvoyée par somepackage.DoSomething() est égale à mypkg.ErrExample , alors l'instruction if sera exécutée.

En utilisant une variable au niveau du package pour comparer les erreurs, vous pouvez rendre votre code plus fiable et moins cassant.

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