Heim >Backend-Entwicklung >Golang >Was sind die Best Practices für den Umgang mit Fehlern in Go?

Was sind die Best Practices für den Umgang mit Fehlern in Go?

Linda Hamilton
Linda HamiltonOriginal
2024-12-31 05:28:131026Durchsuche

What are the Best Practices for Handling Errors in Go?

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")
)

2. Fehlertypen

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

3. Ad-hoc-Fehler

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

4. Standardbibliotheksfehler

func SomeFunc() error {
    return io.EOF
}

5. Fehlerschnittstellen

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

6. Wrapping-Fehler (Go 1.13)

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

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn