Heim > Backend-Entwicklung > Golang > Wie gehe ich am besten mit Fehlern in Go um?

Wie gehe ich am besten mit Fehlern in Go um?

Mary-Kate Olsen
Freigeben: 2024-12-27 10:06:10
Original
542 Leute haben es durchsucht

How to Best Handle Errors in Go?

Standardfehlervariablen in Go

In Golang gibt es mehrere idiomatische Ansätze für den Umgang mit Fehlern.

Benutzerdefinierte Fehlervariablen

Autoren deklarieren häufig feste Fehlervariablen gemäß der Namenskonvention Err... For Beispiel:

var (
        ErrSomethingBad = errors.New("some string")
        ErrKindFoo      = errors.New("foo happened")
)
Nach dem Login kopieren

Fehlertypen

Das Deklarieren von Fehlertypen (...Fehler) mit spezifischen Informationen, die für Anrufer nützlich sind, ist eine weitere gängige Praxis.

type SomeError struct {
     // extra information, whatever might be useful to callers
     // (or for making a nice message in `Error()`)
     ExtraInfo int
}
type OtherError string

func (e SomeError) Error() string { /* … */ }
func (e OtherError) Error() string {
        return fmt.Sprintf("failure doing something with %q", string(e))
}
Nach dem Login kopieren

Ad-hoc-Fehler

Wenn Sie nicht erwarten, dass Benutzer Tests auf bestimmte Fehler durchführen müssen, können Sie eine Anzeige erstellen Hoc-Fehler mithilfe von „errors.New“.

func SomepackageFunction() error {
        return errors.New("not implemented")
}
Nach dem Login kopieren

Verwendung von Standardpaketfehlern

Sie können Fehler verwenden, die in Standardpaketen wie io.EOF definiert sind. Im Allgemeinen ist es jedoch besser, benutzerdefinierte Fehler für Ihr eigenes Paket zu erstellen.

func SomeFunc() error {
        return io.EOF
}
Nach dem Login kopieren

Fehlerschnittstellen

Durch das Erstellen einer Fehlerschnittstelle können Sie bestimmte Verhaltensweisen oder Typen überprüfen.

type Error interface {
    error
    Timeout() bool   // Is the error a timeout?
    Temporary() bool // Is the error temporary?
}
Nach dem Login kopieren

Kontextbezogen Fehler

Verwenden Sie diese Technik mit Go 1.13 oder höher, um zusätzlichen Kontext zu einem vorhandenen Fehler bereitzustellen.

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

Die Wahl des Ansatzes hängt davon ab, ob Sie davon ausgehen, dass Benutzer Tests durchführen müssen spezifische Fehler und die Möglichkeit für mehrere Benutzer, ihre eigene Fehlerbehandlung zu implementieren.

Das obige ist der detaillierte Inhalt vonWie gehe ich am besten mit Fehlern in Go um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage