Standard-Fehlerbehandler in Go
Go verfügt über mehrere idiomatische Ansätze zur Fehlerbehandlung:
1. Fehlervariablen behoben
var (
ErrSomethingBad = errors.New("some string")
ErrKindFoo = errors.New("foo happened")
)
Nach dem Login kopieren
2. Fehlertypen
type SomeError struct {
ExtraInfo int
}
func (e SomeError) Error() string { /* … */ }
Nach dem Login kopieren
3. Ad-hoc-Fehler
func SomepackageFunction() error {
return errors.New("not implemented")
}
Nach dem Login kopieren
4. Standardbibliotheksfehler
func SomeFunc() error {
return io.EOF
}
Nach dem Login kopieren
5. Fehlerschnittstellen
type Error interface {
error
Timeout() bool
Temporary() bool
}
Nach dem Login kopieren
6. Wrapping-Fehler (Go 1.13)
func SomepackageFunction() error {
err := somethingThatCanFail()
if err != nil {
return fmt.Errorf("some context: %w", err)
}
}
Nach dem Login kopieren
Den richtigen Ansatz wählen
Die bevorzugten Methoden sind:
- Fehler behoben Variablen oder Fehlertypen für Fehler, die Benutzer möglicherweise speziell testen möchten.
- Ad-hoc-Fehler oder Standardbibliotheksfehler für kleinere Fehler, die wahrscheinlich nicht getestet werden.
- Fehlerschnittstellen für Fehler mit bestimmtem Verhalten oder Eigenschaften.
- Umschlossene Fehler zum Hinzufügen von Kontext zu vorhandenen Fehlern (Go 1.13 ).
Vorteile:
-
Feste Fehlervariablen:Einfach zu testen und zu vergleichen.
- Fehlertypen: Erweiterbar mit zusätzlichen Informationen für Fehler Handhabung.
-
Ad-hoc-Fehler: Prägnant für kleinere Fehler.
-
Fehlerschnittstellen: Erzwingen Sie spezifisches Fehlerverhalten und erleichtern Sie Polymorphismus.
-
Umschlossene Fehler: Stellen Sie Kontext bereit, ohne einen benutzerdefinierten Fehler zu erstellen Typen.
Weiterführende Literatur:
- [Fehler effektiv beheben](https://go.dev/doc/articles/errors)
- [The Go Blog: Fehlerbehandlung und Go](https://blog.golang.org/error-handling-and-go)
- [Dave Cheney: Inspecting Errors](https://dave.cheney.net/2016/04/07 /inspecting-errors)
- [Peter Bourgon: Programmieren mit Fehler](https://go.dev/blog/errors)
Das obige ist der detaillierte Inhalt vonWas sind die Best Practices für den Umgang mit Fehlern in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!