Wie gehe ich mit benutzerdefinierten Typfehlern in Golang um?

WBOY
Freigeben: 2024-06-05 12:47:56
Original
1008 Leute haben es durchsucht

Durch das Erstellen benutzerdefinierter Fehlertypen können Sie domänenspezifische Fehler in Golang behandeln. Nachdem Sie einen Fehlertyp erstellt haben, können Sie mithilfe von Fehlerzusicherungen prüfen, ob der Fehlertyp mit einem benutzerdefinierten Fehlertyp übereinstimmt. Wenn es eine Übereinstimmung gibt, können Sie auf die benutzerdefinierte Fehlermeldung zugreifen. Behandeln Sie andernfalls andere Arten von Fehlern.

如何处理 Golang 中自定义类型的错误?

So gehen Sie mit benutzerdefinierten Fehlertypen in Golang um

Das Erstellen benutzerdefinierter Fehlertypen in Golang ist eine hervorragende Möglichkeit, domänenspezifische Fehler zu definieren. Dadurch können Sie Fehler erstellen, die zusätzliche Informationen zum Fehler enthalten.

Benutzerdefinierte Fehlertypen erstellen

Um benutzerdefinierte Fehlertypen zu erstellen, können Sie die integrierte Funktion errors.New() verwenden: errors.New() 函数:

package errors

import "fmt"

type MyError struct {
    msg string
}

func New(msg string) *MyError {
    return &MyError{msg: msg}
}

func (m *MyError) Error() string {
    return fmt.Sprintf("自定义错误:%s", m.msg)
}
Nach dem Login kopieren

Error() 方法返回错误消息。它应该是实现了 error 接口的唯一方法,即它应该返回字符串类型的消息。

处理自定义错误

一旦创建了自定义错误类型,就可以使用 errortype assersions

func process() error {
    // 调用可能有错误的方法
    if err := doSomething(); err != nil {
        if me, ok := err.(*MyError); ok {
            // 处理自定义错误
            fmt.Println(me.msg)
        } else {
            // 处理其他类型的错误
            return err
        }
    }
    return nil
}
Nach dem Login kopieren

Error() Methode Gibt eine Fehlermeldung zurück. Es sollte die einzige Methode sein, die die Fehlerschnittstelle implementiert, d. h. sie sollte eine Nachricht vom Typ String zurückgeben.

Umgang mit benutzerdefinierten Fehlern

Sobald Sie einen benutzerdefinierten Fehlertyp erstellt haben, können Sie Fehlertypzusicherungen verwenden, um nach Fehlern zu suchen:

func convertToString(num int) (string, error) {
    if num < 0 {
        return "", errors.New("数字必须为非负数")
    }
    return strconv.Itoa(num), nil
}
Nach dem Login kopieren

🎜Ein praktisches Beispiel🎜🎜🎜Hier ist eine Möglichkeit zum Konvertieren eine Zahl zu Beispiel einer Funktion, die beim Aufruf einer Zeichenfolge einen benutzerdefinierten Fehler auslösen kann: 🎜
result, err := convertToString(-1)
if err != nil {
    if me, ok := err.(*errors.MyError); ok {
        fmt.Println(me.msg)  // 输出:数字必须为非负数
    }
}
Nach dem Login kopieren
🎜Sie können eine Fehlerzusicherung verwenden, um benutzerdefinierte Fehler beim Aufruf dieser Funktion zu behandeln: 🎜rrreee

Das obige ist der detaillierte Inhalt vonWie gehe ich mit benutzerdefinierten Typfehlern in Golang um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
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!