Maison > développement back-end > Golang > Comment puis-je gérer avec élégance plusieurs erreurs dans Go ?

Comment puis-je gérer avec élégance plusieurs erreurs dans Go ?

DDD
Libérer: 2024-12-04 17:19:11
original
823 Les gens l'ont consulté

How Can I Elegantly Handle Multiple Errors in Go?

Gérer plusieurs erreurs avec élégance dans Go

Dans Go, la gestion de plusieurs erreurs peut devenir fastidieuse lorsque de nombreuses opérations peuvent conduire à des erreurs. Une approche pour atténuer ce problème consiste à exploiter le magasin de valeurs-clés fourni par le type d'erreur.

Considérez l'extrait de code suivant :

aJson, err1 := json.Marshal(a)
bJson, err2 := json.Marshal(b)
cJson, err3 := json.Marshal(c)
dJson, err4 := json.Marshal(d)
eJson, err5 := json.Marshal(e)
fJson, err6 := json.Marshal(f)
gJson, err4 := json.Marshal(g)
if err1 != nil {
    return err1
} else if err2 != nil {
    return err2
} else if err3 != nil {
    return err3
} else if err4 != nil {
    return err4
} else if err5 != nil {
    return err5
} else if err5 != nil {
    return err5
} else if err6 != nil {
    return err6
}
Copier après la connexion

La gestion des erreurs de ce code est répétitive et détaillée. Pour le rationaliser, nous pouvons utiliser une fonction qui prend un pointeur de destination et une interface source. Cette fonction tentera de rassembler la source vers la destination et renverra une erreur en cas d'échec. Nous pouvons alors utiliser cette fonction avec toutes nos sources et combiner les erreurs en une seule erreur. Voici comment nous pouvons y parvenir :

var err error
f := func(dest *D, src S) bool {
    *dest, err = json.Marshal(src)
    return err == nil
} // EDIT: removed ()

f(&aJson, a) &&
    f(&bJson, b) &&
    f(&cJson, c) &&
    f(&dJson, d) &&
    f(&eJson, e) &&
    f(&fJson, f) &&
    f(&gJson, g)
return err
Copier après la connexion

Cette approche combine élégamment plusieurs erreurs en une seule variable d'erreur. Il simplifie la gestion des erreurs, améliore la lisibilité du code et facilite la gestion des erreurs dans les boucles et autres scénarios complexes.

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