Spezifische Fehler in Go abfangen
Go bietet eine flexible Fehlerbehandlung, sodass Entwickler bestimmte Fehlertypen in ihrem Code beheben können. Angenommen, Sie arbeiten mit der Funktion rpc.Dial und möchten nur die Fehler „Verbindung verloren“ oder „Verbindung abgelehnt“ behandeln.
Verwenden von „errors.Is“ und „errors.As“
Moderne Go-Versionen stellen die Funktionen „errors.Is“ und „errors.As“ für eine effiziente Fehlerbehandlung bereit. In Ihrem Fall:
if errors.Is(err, syscall.ECONNREFUSED) { // Handle connection refused error } else if errors.As(err, &net.OpError{}) { // Handle other network errors (e.g., connection lost) }
Fehlertypen überprüfen
Ein anderer Ansatz besteht darin, Fehlertypen direkt zu überprüfen. Wie in Ihrer Frage erwähnt, definiert das Net-Paket verschiedene Fehlertypen, einschließlich net.Error für Netzwerkfehler:
if _, ok := err.(net.Error); ok { // Handle net.Error instance }
Fehlerdokumentation lesen
Um alles Mögliche zu verstehen Fehler, die von einer Funktion zurückgegeben werden, finden Sie in der Dokumentation. Beispielsweise liefert der Godoc für rpc.Dial Details zu den verschiedenen Fehlern, die zurückgegeben werden können.
Legacy-Ansatz
Als letzten Ausweg können Sie die Fehlerzeichenfolge vergleichen zu den erwarteten Fehlern:
if strings.Contains(err.Error(), "connection lost") { // Handle connection lost error }
Dieser Ansatz wird jedoch nicht empfohlen, da er anfällig für falsch positive oder negative Ergebnisse ist.
Das obige ist der detaillierte Inhalt vonWie kann ich in Go gezielt die Fehler „Verbindung verloren' oder „Verbindung abgelehnt' abfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!