Maison  >  Article  >  développement back-end  >  Conseils d'application de type d'erreur pour les fonctions Golang

Conseils d'application de type d'erreur pour les fonctions Golang

王林
王林original
2023-05-18 08:04:521658parcourir

Dans le langage Golang, les fonctions sont un élément clé de la logique d'implémentation de base, et la gestion des erreurs est un aspect important de la plupart des fonctions. Golang fournit un puissant mécanisme de gestion des erreurs via le type Error. Dans cet article, nous explorerons les compétences d'application de type erreur des fonctions Golang.

1. Comprendre le type d'erreur de Golang

Dans Golang, Error est un type d'interface avec une seule méthode Error() :

type error interface {
    Error() string
}

Tout type A peut devenir un type d'erreur tant qu'il implémente la méthode Error, qui renvoie une chaîne décrivant la raison de l'erreur. Par conséquent, le type Error joue un rôle unifié dans la gestion des erreurs dans Golang.

2. Erreur de retour

La fonction est une partie importante de Golang. Cependant, lorsqu'une fonction renvoie une erreur, Golang utilise généralement une valeur de retour distincte pour indiquer l'erreur. Par exemple, lors d'opérations sur les fichiers, si l'opération échoue, une erreur est renvoyée. Les fonctions courantes d'opération de fichier sont les suivantes :

func Open(name string) (*File, error) 
func (f *File) Read(b []byte) (n int, err error)
func (f *File) Write(b []byte) (n int, err error)
fucn (f *File) Seek(offset int64, whence int) (ret int64, err error)

La dernière valeur renvoyée par ces fonctions est généralement une erreur. Nous pouvons rendre notre code plus robuste en renvoyant un type d'erreur approprié pour gérer les erreurs.

Après avoir renvoyé une erreur, utilisez une syntaxe similaire à la suivante pour la gérer :

_, err := f.Read(b)
if err != nil {
    log.Fatal(err)
}

Dans cet exemple, s'il y a une erreur de lecture du fichier, le programme émettra un journal "erreur".

3. Comparaison des types d'erreurs

Dans Golang, il existe trois façons de comparer les types d'erreurs.

1. Utilisez des chaînes pour comparaison

Nous pouvons comparer la chaîne d'erreur avec d'autres chaînes pour produire les actions correspondantes :

if err.Error() == "file not found" {
    return
}

2. Utilisez une erreur spécifique types à comparer

Pour certains types d'erreurs spécifiques, nous pouvons utiliser des assertions de type pour les comparer. Par exemple, supposons que nous ayons une fonction DoSomething qui renvoie un type d'erreur spécifique, nous pouvons vérifier le type d'erreur à l'aide de l'assertion de type comme suit : Type d'erreur. Si le type d'erreur renvoyé est CustomError, CustomMessage sera affiché sur la console.

3. Utilisez les codes d'erreur pour comparer

Enfin, nous pouvons utiliser les codes d'erreur pour comparer les types d'erreurs. Le code d'erreur est une constante personnalisée, généralement incluse dans un type d'erreur personnalisé. Voici un exemple :

_, err := DoSomething()
if e, ok := err.(*CustomError); ok {
    fmt.Println(e.CustomMessage)
}

Dans cet exemple, nous définissons deux constantes de code d'erreur (ErrCodeFileNotFound et ErrCodeInvalidParam) et les utilisons pour comparer les types d'erreurs. Ensuite, nous définissons un type d'erreur personnalisé, CustomError, qui contient le code d'erreur et le message personnalisé. Enfin, nous définissons une fonction DoSomething qui renvoie une instance de type CustomError.

Enfin, nous utilisons le code d'erreur dans main pour comparer le type d'erreur et imprimer le message d'erreur correspondant.

En bref, le type Error de Golang est un moyen puissant de gérer les erreurs. Avec les bons types d’erreurs, nous pouvons mieux gérer diverses conditions d’erreur, rendant notre code plus robuste et efficace.

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