Heim > Artikel > Backend-Entwicklung > Muster und Antimuster der Fehlerbehandlung von Golang-Funktionen
Zu den Fehlerbehandlungsmodi der Go-Funktion gehören: Verwenden von „errors.New()“ zum Erstellen von Fehlern, Umschließen zugrunde liegender Fehler und Zurückgeben von „nil“, um anzuzeigen, dass keine Fehler vorliegen. Zu den Anti-Mustern gehören die Verwendung magischer Zahlen oder Zeichenfolgen zur Darstellung von Fehlern, die implizite Behandlung von Fehlern, das Ignorieren von Fehlern und verzögerte Beendigungsmuster. Best Practice: Verwenden Sie „errors.New()“, um Fehler zu erstellen und zurückzugeben. Anti-Pattern-Beispiel: Von os.Open() zurückgegebene Fehler ignorieren. Das Befolgen von Best Practices und das Vermeiden von Anti-Patterns führt zu klarem, wartbarem und leicht zu debuggendem Code.
Muster und Anti-Patterns der Go-Funktionsfehlerbehandlung
Wenn es um die Behandlung von Fehlern in Go geht, gibt es viele Möglichkeiten, dies zu tun. Allerdings sind nicht alle Modelle ideal. In diesem Artikel werden Best Practices und Anti-Patterns für die Funktionsfehlerbehandlung in Go untersucht und Beispiele aus der Praxis zur Veranschaulichung bereitgestellt.Best Practice:
errors.New()
, um Fehler zu erstellen: Dies ist die häufigste Methode zum Erstellen eines neuen Fehlers, der einen Fehler
-Wert.
errors.New()
创建错误:这是一个创建新错误的最常见方法,它可以返回带有简洁描述的 error
值。nil
表示没有错误:如果函数未遇到错误,则应返回 nil
。反模式:
if err != nil { ... }
来检查错误,然后直接返回,因为这会使错误处理难以跟踪。if err != nil { return err }
的模式会使代码难以阅读和维护。真实案例:
最佳实践:以下函数使用 errors.New()
创建一个新的错误,并返回它以向调用者指示文件打开失败:
func OpenFile(path string) (*os.File, error) { f, err := os.Open(path) if err != nil { return nil, errors.New("failed to open file: " + err.Error()) } return f, nil }
反模式:以下函数没有处理 os.Open()
Wenn eine Funktion einen Fehler empfängt, kann sie in einen neuen Fehler eingeschlossen werden, um mehr Kontext über die Fehlerquelle bereitzustellen.
🎜Gibnil
zurück, um anzuzeigen, dass kein Fehler vorliegt: 🎜Wenn die Funktion keinen Fehler festgestellt hat, sollte sie nil
zurückgeben. 🎜🎜Verwenden Sie keine globalen Fehlervariablen: 🎜Die Verwendung globaler Fehlervariablen kann zu Race-Bedingungen führen und das Debuggen von Code erschweren. 🎜🎜Fehlerbehandlung: 🎜Alle Fehler sollten innerhalb der Funktion behandelt und nicht ignoriert werden. Im Idealfall sollte ein Fehler zurückgegeben werden, der darauf hinweist, dass die Funktion fehlgeschlagen ist. 🎜🎜Anti-Muster: 🎜🎜🎜🎜🎜Verwendung magischer Zahlen oder fester Zeichenfolgen zur Darstellung von Fehlern: 🎜Dies kann die Wartung und Erweiterung des Codes erschweren. 🎜🎜Implizite Behandlung von Fehlern: 🎜Verwenden Sie if err != nil { ...
nicht, um nach Fehlern zu suchen und dann direkt zurückzukehren, da dies die Fehlerbehandlung erschwert Schiene. 🎜🎜Fehler ignorieren: 🎜Behandeln Sie Fehler immer, auch wenn Sie denken, dass sie unwahrscheinlich sind. 🎜🎜Verzögertes Exit-Muster verwenden: 🎜Die Verwendung des Musters if err != nil { return err
am Ende einer Funktion kann das Lesen und Warten des Codes erschweren. 🎜🎜Echter Fall: 🎜🎜🎜🎜Best Practice: 🎜Die folgende Funktion verwendet errors.New()
, um einen neuen Fehler zu erstellen und ihn an den Aufrufer zurückzugeben. Zeigt dies an Das Öffnen der Datei ist fehlgeschlagen: 🎜func OpenFile(path string) *os.File { f, _ := os.Open(path) return f }🎜🎜 Anti-Pattern: 🎜Die folgende Funktion behandelt den von
os.Open()
zurückgegebenen Fehler nicht, der zum Absturz des Programms führen kann: 🎜rrreee🎜 Best Practices Wie in diesem Artikel beschrieben, können Sie durch Übung und Vermeidung von Anti-Patterns Code schreiben, der klar, wartbar und leicht zu debuggen ist. 🎜Das obige ist der detaillierte Inhalt vonMuster und Antimuster der Fehlerbehandlung von Golang-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!