Umgang mit benutzerdefinierten Fehlertypen in Go
Bei der Verwendung benutzerdefinierter Fehlertypen in Go treten Schwierigkeiten auf. Nachdem Sie auf einen Blog-Beitrag zu Fehlern verwiesen haben, versuchen Sie, einen benutzerdefinierten Fehlertyp „ModelMissingError“ zu definieren, stoßen jedoch bei der Überprüfung seines Typs auf einen Fehler.
Um dieses Problem zu beheben, müssen Sie das „Komma ok“-Idiom verwenden:
serr, ok := err.(*model.ModelMissingError)
Mit dieser Redewendung können Sie den Typ eines Schnittstellenwerts bestimmen und den zugrunde liegenden konkreten Wert ermitteln. In diesem Fall wird die Fehlervariable err getestet, um zu sehen, ob sie einen konkreten Typ von *model.ModelMissingError enthält.
Wenn die Behauptung erfolgreich ist, wird ok auf true gesetzt und serr wird das zugrunde liegende *model enthalten .ModelMissingError-Wert. Anschließend können Sie diesen Wert verwenden, um basierend auf dem benutzerdefinierten Fehler entsprechende Maßnahmen zu ergreifen.
Sie können Ihren Code beispielsweise wie folgt ändern:
if ok && serr.msg == "no model found for id" { // Handle error gracefully }
Das obige ist der detaillierte Inhalt vonWie kann ich benutzerdefinierte Fehlertypen in Go ordnungsgemäß behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!