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.
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 SieFehlertypzusicherungen
verwenden, um nach Fehlern zu suchen: func convertToString(num int) (string, error) { if num < 0 { return "", errors.New("数字必须为非负数") } return strconv.Itoa(num), nil }
result, err := convertToString(-1) if err != nil { if me, ok := err.(*errors.MyError); ok { fmt.Println(me.msg) // 输出:数字必须为非负数 } }
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!