Heim > Backend-Entwicklung > Golang > Wie kann ich den Typ eines benutzerdefinierten Fehlers in Go überprüfen?

Wie kann ich den Typ eines benutzerdefinierten Fehlers in Go überprüfen?

Linda Hamilton
Freigeben: 2024-12-25 20:43:19
Original
761 Leute haben es durchsucht

How Can I Check the Type of a Custom Error in Go?

Anpassen von Fehlertypen in Go

Das Anreichern Ihrer Go-Anwendungen mit benutzerdefinierten Fehlertypen verbessert die Fehlerbehandlung, aber die Bearbeitung dieser benutzerdefinierten Typen kann eine Herausforderung sein. Lassen Sie uns tiefer in die Frage der Überprüfung des Typs eines benutzerdefinierten Fehlers eintauchen.

Das Problem

Betrachten Sie den folgenden benutzerdefinierten Fehlertyp:

type ModelMissingError struct {
    msg string // description of error
}

func (e *ModelMissingError) Error() string { return e.msg }
Nach dem Login kopieren

Innerhalb einer Methode haben wir kann einen benutzerdefinierten Fehler auslösen:

return Model{}, &ModelMissingError{"no model found for id"}
Nach dem Login kopieren

Die Abfrage

Um festzustellen, ob ein Fehler spezifisch ist Benutzerdefinierter Typ, wir müssen seinen Typ überprüfen. Allerdings schlägt der Ansatz if err == model.ModelMissingError fehl.

Die Lösung

Go stellt das Comma Ok Idiom zur Prüfung auf Typzusicherung bereit:

serr, ok := err.(*model.ModelMissingError)
Nach dem Login kopieren

Diese Anweisung bestätigt, dass die Fehlervariable err den Typ model.ModelMissingError enthält und weist den zu Der zugrunde liegende Wert der Variablen serr. Wenn err nicht den erwarteten Typ enthält, gibt die Anweisung nil für serr und false für ok zurück.

Durch die Verwendung der Komma-OK-Sprache können wir den Typ eines benutzerdefinierten Fehlers effizient überprüfen und ihn entsprechend behandeln.

Das obige ist der detaillierte Inhalt vonWie kann ich den Typ eines benutzerdefinierten Fehlers in Go überprüfen?. 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