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
Linda HamiltonOriginal
2024-12-25 20:43:19767Durchsuche

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 }

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

return Model{}, &ModelMissingError{"no model found for id"}

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)

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!

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
Vorheriger Artikel:Früh aufgeben für den Sieg!Nächster Artikel:Früh aufgeben für den Sieg!