Heim >Backend-Entwicklung >Golang >Wie gehe ich mit benutzerdefinierten Typfehlern in Golang um?

Wie gehe ich mit benutzerdefinierten Typfehlern in Golang um?

WBOY
WBOYOriginal
2024-06-05 12:47:561040Durchsuche

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

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
}

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
}

🎜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)  // 输出:数字必须为非负数
    }
}
🎜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!

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