Heim > Backend-Entwicklung > Golang > Wie kann ich Fehler in Go zuverlässig vergleichen?

Wie kann ich Fehler in Go zuverlässig vergleichen?

Mary-Kate Olsen
Freigeben: 2024-11-27 13:46:11
Original
555 Leute haben es durchsucht

How Can I Reliably Compare Errors in Go?

Vergleichen von Fehlermeldungen in Go

In Go sind Fehler einfach Werte, die die Fehlerschnittstelle implementieren. Dies bedeutet, dass Fehler mithilfe der Standard-Gleichheitsoperatoren (== und !=) verglichen werden können. Es wird jedoch im Allgemeinen nicht empfohlen, Fehler anhand ihrer von der Methode Error() zurückgegebenen Zeichenfolgendarstellung zu vergleichen. Dies liegt daran, dass sich die Zeichenfolgendarstellung im Laufe der Zeit ändern kann, was Ihren Code spröde machen kann.

Eine zuverlässigere Möglichkeit, Fehler zu vergleichen, besteht darin, eine Variable auf Paketebene zu verwenden, die den erwarteten Fehler speichert. Diese Variable kann zum Vergleich mit dem von einer Funktion zurückgegebenen Fehler verwendet werden. Zum Beispiel:

package mypkg

import (
    "errors"
)

// ErrExample is an example error.
var ErrExample = errors.New("this is an example")

// DoSomething returns an error if something goes wrong.
func DoSomething() error {
    // ...

    // If something goes wrong, return the error.
    return ErrExample
}
Nach dem Login kopieren

Zum Vergleich mit dem von DoSomething() zurückgegebenen Fehler können Sie den folgenden Code verwenden:

if err := DoSomething(); err != nil {
    // Handle the error.
}
Nach dem Login kopieren

Wenn der von DoSomething() zurückgegebene Fehler gleich ist ErrExample, dann wird die if-Anweisung ausgeführt.

Sie können die Variable auf Paketebene auch exportieren, wenn Code außerhalb des Pakets auf den Fehler zugreifen muss. Zum Beispiel:

package mypkg

import (
    "errors"
)

// ErrExample is an example error.
var ErrExample = errors.New("this is an example")

// Export the error.
var ErrExample = ErrExample
Nach dem Login kopieren

Um den exportierten Fehler zu verwenden, können Sie den folgenden Code verwenden:

if err := somepackage.DoSomething(); err != nil {
    // Handle the error.
}
Nach dem Login kopieren

Wenn der von somepackage.DoSomething() zurückgegebene Fehler gleich mypkg.ErrExample ist , dann wird die if-Anweisung ausgeführt.

Durch die Verwendung einer Variablen auf Paketebene zum Vergleichen von Fehlern können Sie Ihren Code zuverlässiger und weniger zuverlässig machen spröde.

Das obige ist der detaillierte Inhalt vonWie kann ich Fehler in Go zuverlässig vergleichen?. 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