Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich in Go gezielt die Fehler „Verbindung verloren“ oder „Verbindung abgelehnt“ abfangen?

Wie kann ich in Go gezielt die Fehler „Verbindung verloren“ oder „Verbindung abgelehnt“ abfangen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-06 13:57:03992Durchsuche

How Can I Specifically Catch

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!

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