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
Libérer: 2024-12-31 05:28:13
original
1023 Les gens l'ont consulté

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")
)
Copier après la connexion

2. Types d'erreurs

type SomeError struct {
    ExtraInfo int
}
func (e SomeError) Error() string { /* … */ }
Copier après la connexion

3. Erreurs ad hoc

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

4. Erreurs de bibliothèque standard

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

5. Interfaces d'erreur

type Error interface {
    error
    Timeout() bool
    Temporary() bool
}
Copier après la connexion

6. Erreurs d'emballage (Go 1.13)

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

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!

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