Heim > Backend-Entwicklung > Golang > Wie kann ich Fehler in Go im Gegensatz zu GetMessage() von Java effektiv vergleichen und behandeln?

Wie kann ich Fehler in Go im Gegensatz zu GetMessage() von Java effektiv vergleichen und behandeln?

Mary-Kate Olsen
Freigeben: 2024-11-25 21:09:11
Original
220 Leute haben es durchsucht

How Do I Effectively Compare and Handle Errors in Go, Unlike Java's GetMessage()?

Vergleichen von Fehlermeldungen in Go

In Java können Sie GetMessage() verwenden, um die Fehlermeldung aus einer Ausnahme abzurufen. In Go ist jedoch keine entsprechende Methode für den Fehlertyp definiert. Stattdessen müssen benutzerdefinierte Fehlerbehandlungstechniken eingesetzt werden.

Benutzerdefinierte Fehlerbehandlung

Ein Ansatz besteht darin, eine Variable auf Paketebene zu definieren, um die spezifische Fehlermeldung darzustellen, die Sie möchten prüfen. Zum Beispiel:

var errExample = errors.New("this is an example")
Nach dem Login kopieren

Wenn Sie Fehler zurückgeben, können Sie diese Variable anstelle einer generischen Fehlerzeichenfolge verwenden:

if err := some_package.DoSomething(); err != nil {
    if err == errExample {
        // handle it however.
    }
}
Nach dem Login kopieren

Exportieren der Fehlervariablen

Wenn Code außerhalb des Pakets auf den Fehler zugreifen muss, können Sie die Variable mit einem Großbuchstaben exportieren:

var ErrExample = errors.New("this is an example")
Nach dem Login kopieren

Dies ermöglicht Sie können den Fehler mit der exportierten Variablen vergleichen:

if err == somepackage.ErrExample {
    // handle it
}
Nach dem Login kopieren

Beispiele

  • Absoluter Dateipfad: os.ErrNotExist
  • HTTP-Fehler: net/http.ErrServerClosed
  • Datenbankfehler:database/sql.ErrNoRows

Falle: String-Vergleich vermeiden

Widerstehen Sie der Versuchung, einen Vergleich mit der Zeichenfolge durchzuführen, die von der Error()-Methode des Fehlers zurückgegeben wird. Dies kann zu brüchigem Code führen. Zum Beispiel:

if err.Error() == "this is an example" {
    // this is not recommended
}
Nach dem Login kopieren

Verwenden Sie stattdessen den oben beschriebenen benutzerdefinierten Fehlerbehandlungsansatz.

Das obige ist der detaillierte Inhalt vonWie kann ich Fehler in Go im Gegensatz zu GetMessage() von Java effektiv vergleichen und behandeln?. 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