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!