Maison > développement back-end > Golang > Comment gérer au mieux les erreurs dans Go ?

Comment gérer au mieux les erreurs dans Go ?

Mary-Kate Olsen
Libérer: 2024-12-27 10:06:10
original
542 Les gens l'ont consulté

How to Best Handle Errors in Go?

Variables d'erreur standard dans Go

Dans Golang, il existe plusieurs approches idiomatiques pour gérer les erreurs.

Variables d'erreur personnalisées

Les auteurs déclarent souvent des variables d'erreur fixes en suivant la convention de dénomination Err.... Pour exemple :

var (
        ErrSomethingBad = errors.New("some string")
        ErrKindFoo      = errors.New("foo happened")
)
Copier après la connexion

Types d'erreurs

Déclarer les types d'erreurs (...Erreur) avec des informations spécifiques utiles aux appelants est une autre pratique courante.

type SomeError struct {
     // extra information, whatever might be useful to callers
     // (or for making a nice message in `Error()`)
     ExtraInfo int
}
type OtherError string

func (e SomeError) Error() string { /* … */ }
func (e OtherError) Error() string {
        return fmt.Sprintf("failure doing something with %q", string(e))
}
Copier après la connexion

Erreurs ad hoc

Si vous ne vous attendez pas à ce que les utilisateurs aient besoin de tester des erreurs spécifiques, vous pouvez créez des erreurs ad hoc à l'aide d'erreurs.Nouveau.

func SomepackageFunction() error {
        return errors.New("not implemented")
}
Copier après la connexion

Utilisation des erreurs de package standard

Vous pouvez utiliser des erreurs définies dans des packages standard comme io.EOF. Cependant, il est généralement préférable de créer des erreurs personnalisées pour votre propre package.

func SomeFunc() error {
        return io.EOF
}
Copier après la connexion

Interfaces d'erreur

La création d'une interface d'erreur vous permet de vérifier des comportements ou des types spécifiques.

type Error interface {
    error
    Timeout() bool   // Is the error a timeout?
    Temporary() bool // Is the error temporary?
}
Copier après la connexion

Contextuel Erreurs

Utilisez cette technique avec Go 1.13 ou version ultérieure pour fournir un contexte supplémentaire à une erreur existante.

func SomepackageFunction() error {
    err := somethingThatCanFail()
    if err != nil {
            return fmt.Errorf("some context: %w", err)
    }
}
Copier après la connexion

Le choix de l'approche dépend si vous prévoyez que les utilisateurs devront tester erreurs spécifiques et possibilité pour plusieurs utilisateurs de mettre en œuvre leur propre 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!

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