Maison > Article > développement back-end > Modèles et anti-modèles de gestion des erreurs de la fonction Golang
Les modes de gestion des erreurs de la fonction Go incluent : l'utilisation d'erreurs.New() pour créer des erreurs, l'encapsulation des erreurs sous-jacentes et le retour de zéro pour indiquer qu'il n'y a aucune erreur. Les anti-modèles incluent : l'utilisation de nombres magiques ou de chaînes pour représenter les erreurs, la gestion implicite des erreurs, l'ignorance des erreurs et les modèles de sortie retardée. Bonne pratique : utilisez error.New() pour créer et renvoyer des erreurs. Exemple d'anti-modèle : ignorez les erreurs renvoyées par os.Open(). Suivre les meilleures pratiques et éviter les anti-modèles permet d'obtenir un code clair, maintenable et facile à déboguer.
Modèles et anti-modèles de gestion des erreurs de la fonction Go
Quand il s'agit de gérer les erreurs dans Go, il existe de nombreuses façons de le faire. Cependant, tous les modèles ne sont pas idéaux. Cet article explorera les meilleures pratiques et les anti-modèles pour la gestion des erreurs de fonction dans Go, et fournira des exemples concrets pour les démontrer.Meilleure pratique :
errors.New()
pour créer des erreurs : C'est la manière la plus courante de créer une nouvelle erreur, qui renvoie un erreur
.
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()
Si une fonction reçoit une erreur, elle peut être enveloppée dans une nouvelle erreur pour fournir plus de contexte sur la source de l'erreur.
🎜Renvoyernil
pour indiquer aucune erreur : 🎜Si la fonction n'a rencontré aucune erreur, elle doit renvoyer nil
. 🎜🎜N'utilisez pas de variables d'erreur globales : 🎜L'utilisation de variables d'erreur globales peut créer des conditions de concurrence critique et rendre le code difficile à déboguer. 🎜🎜Gestion des erreurs : 🎜Toutes les erreurs doivent être traitées dans la fonction plutôt qu'ignorées. Idéalement, une erreur devrait être renvoyée indiquant que la fonction a échoué. 🎜🎜Anti-modèle : 🎜🎜🎜🎜🎜Utilisation de nombres magiques ou de chaînes fixes pour représenter les erreurs : 🎜Cela peut rendre le code difficile à maintenir et à étendre. 🎜🎜Gestion implicite des erreurs : 🎜N'utilisez pas if err != nil { ... }
pour vérifier les erreurs puis revenir directement, car cela rendrait la gestion des erreurs difficile à piste. 🎜🎜Ignorer les erreurs : 🎜Toujours gérer les erreurs, même si vous pensez qu'il est peu probable qu'elles se produisent. 🎜🎜Utilisez un modèle de sortie retardée : 🎜Utiliser le modèle if err != nil { return err }
à la fin d'une fonction peut rendre le code difficile à lire et à maintenir. 🎜🎜Cas réel : 🎜🎜🎜🎜Bonne pratique : 🎜La fonction suivante utilise errors.New()
pour créer une nouvelle erreur et la renvoyer à l'appelant Indique que l'ouverture du fichier a échoué : 🎜func OpenFile(path string) *os.File { f, _ := os.Open(path) return f }🎜🎜 Anti-modèle : 🎜La fonction suivante ne gère pas l'erreur renvoyée par
os.Open()
, ce qui peut provoquer le crash du programme : 🎜rrreee🎜 Bonnes pratiques décrit dans cet article Avec de la pratique et en évitant les anti-modèles, vous pouvez écrire du code clair, maintenable et facile à déboguer. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!