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
Mary-Kate OlsenOriginal
2024-11-25 21:09:11156Durchsuche

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")

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.
    }
}

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")

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

if err == somepackage.ErrExample {
    // handle it
}

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
}

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!

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