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

Mary-Kate Olsen
Freigeben: 2024-11-06 13:57:03
Original
1005 Leute haben es durchsucht

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)
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!