Heim >Backend-Entwicklung >Golang >Wie kann ich mehrere Fehler in Go ordnungsgemäß behandeln?

Wie kann ich mehrere Fehler in Go ordnungsgemäß behandeln?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-18 21:07:13371Durchsuche

How Can I Handle Multiple Errors Gracefully in Go?

Eleganter Umgang mit mehreren Fehlern in Go

In Go kann die Fehlerbehandlung mühsam werden, wenn es um zahlreiche potenzielle Fehler geht. Betrachten Sie beispielsweise den folgenden Code:

aJson, err1 := json.Marshal(a)
bJson, err2 := json.Marshal(b)
cJson, err3 := json.Marshal(c)
dJson, err4 := json.Marshal(d)
eJson, err5 := json.Marshal(e)
fJson, err6 := json.Marshal(f)
gJson, err4 := json.Marshal(g)

if err1 != nil {
    return err1
} else if err2 != nil {
    return err2
} else if err3 != nil {
    return err3
} else if err4 != nil {
    return err4
} else if err5 != nil {
    return err5
} else if err5 != nil {
    return err5
} else if err6 != nil {
    return err6
} 

Die Fehlerbehandlung dieses Codes ist sehr repetitiv und schwierig zu warten. Ein saubererer und effizienterer Ansatz besteht darin, einen Abschluss zu verwenden, um alle Fehler auf einmal zu behandeln:

var err error
f := func(dest *D, src S) bool {
    *dest, err = json.Marshal(src)
    return err == nil
} // EDIT: removed ()

f(&aJson, a) &&
    f(&bJson, b) &&
    f(&cJson, c) &&
    f(&dJson, d) &&
    f(&eJson, e) &&
    f(&fJson, f) &&
    f(&gJson, g)
return err

Dieser Funktionszeiger f kapselt die Fehlerbehandlungslogik und vereinfacht die Hauptfunktion durch Verketten von Aufrufen und Zurückgeben des ersten Nicht-Fehlers -nil-Fehler aufgetreten. Durch die Implementierung dieser Technik erreichen Sie eine präzisere und elegantere Fehlerbehandlung.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Fehler in Go ordnungsgemäß behandeln?. 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