Maison >développement back-end >Golang >Quelles sont les meilleures pratiques pour gérer les erreurs dans Go ?

Quelles sont les meilleures pratiques pour gérer les erreurs dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-31 05:28:131038parcourir

What are the Best Practices for Handling Errors in Go?

Gestionnaires d'erreurs standard dans Go

Go propose plusieurs approches idiomatiques pour la gestion des erreurs :

1. Variables d'erreur fixes

var (
    ErrSomethingBad = errors.New("some string")
    ErrKindFoo      = errors.New("foo happened")
)

2. Types d'erreurs

type SomeError struct {
    ExtraInfo int
}
func (e SomeError) Error() string { /* … */ }

3. Erreurs ad hoc

func SomepackageFunction() error {
    return errors.New("not implemented")
}

4. Erreurs de bibliothèque standard

func SomeFunc() error {
    return io.EOF
}

5. Interfaces d'erreur

type Error interface {
    error
    Timeout() bool
    Temporary() bool
}

6. Erreurs d'emballage (Go 1.13)

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

Choisir la bonne approche

Les méthodes préférées sont :

  • Erreur corrigée variables ou types d'erreurs pour les erreurs que les utilisateurs voudront peut-être tester spécifiquement.
  • Erreurs ad hoc ou erreurs de bibliothèque standard pour les erreurs mineures qui sont peu susceptibles d'être testées.
  • Interfaces d'erreur pour les erreurs avec un comportement ou des propriétés spécifiques.
  • Erreurs enveloppées pour ajouter du contexte aux erreurs existantes (Go 1.13 ).

Avantages :

  • Variables d'erreur fixes :Facile à tester et à comparer.
  • Types d'erreur : Extensible avec des informations supplémentaires sur l'erreur gestion.
  • Erreurs ad hoc : Concis pour les erreurs mineures.
  • Interfaces d'erreur : Appliquer un comportement d'erreur spécifique et faciliter le polymorphisme.
  • Erreurs enveloppées : Fournissez du contexte sans créer d'erreur personnalisée types.

Lectures complémentaires :

  • [Erreurs effectives](https://go.dev/doc/articles/errors)
  • [The Go Blog : Gestion des erreurs et Go](https://blog.golang.org/error-handling-and-go)
  • [Dave Cheney : Inspection des erreurs](https://dave.cheney.net/2016/04/07 /inspecting-errors)
  • [Peter Bourgon : Programmation avec erreurs](https://go.dev/blog/errors)

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