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 }
Zum Vergleich mit dem von DoSomething() zurückgegebenen Fehler können Sie den folgenden Code verwenden:
if err := DoSomething(); err != nil { // Handle the error. }
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
Um den exportierten Fehler zu verwenden, können Sie den folgenden Code verwenden:
if err := somepackage.DoSomething(); err != nil { // Handle the error. }
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!