Maison >développement back-end >Golang >Guide pratique de gestion des erreurs de la fonction Golang
Guide pratique de gestion des erreurs : types d'erreurs intégrés : créez des erreurs personnalisées à l'aide de types intégrés. interface d'erreur : encapsulez les erreurs en utilisant la syntaxe %w pour fournir du contexte. Rechercher les erreurs : utilisez == nil pour vérifier si une erreur existe. Error Guard : simplifiez la gestion des erreurs. Types personnalisés : créez des types personnalisés pour indiquer les erreurs et fournir plus d’informations. Récupération : utilisez recovery() pour restaurer les fonctions en cas de panique.
Guide pratique de la gestion des erreurs de fonction dans Go
Introduction
Une bonne gestion des erreurs dans Go est cruciale et peut améliorer considérablement la stabilité et la maintenabilité de votre application. Cet article présente diverses techniques de gestion des erreurs et fournit des exemples pratiques pour illustrer leur utilisation.
1. Types d'erreurs intégrés
Go fournit plusieurs types d'erreurs intégrés, tels que errors.New()
et fmt.Errorf("")
. Nous pouvons créer des erreurs personnalisées en utilisant ces types. errors.New()
和fmt.Errorf("")
。我们可以使用这些类型创建自定义错误。
2. error
接口
error
接口允许不同的错误类型相互兼容。我们可以通过使用%w
语法来包装错误以提供上下文。
实战案例 1:
import "errors" func OpenFile(fname string) error { f, err := os.Open(fname) if err != nil { return errors.New("failed to open file: " + err.Error()) } return nil }
3. 检查错误
我们可以使用 == nil
检查错误。若为 nil
,则表示没有错误。
实战案例 2:
func OpenFile(fname string) *os.File { f, err := os.Open(fname) if err != nil { return nil } return f }
4. 错误守卫
错误守卫语法(if err := f(); err != nil { ... }
)提供了一种简化的错误处理方式。
实战案例 3:
func OpenFile(fname string) (*os.File, error) { if f, err := os.Open(fname); err != nil { return nil, err } else { return f, nil } }
5. 自定义类型
我们可以创建自定义类型来表示错误,并提供额外信息。
实战案例 4:
type FileError struct { fname string err error } func (e FileError) Error() string { return fmt.Sprintf("failed to open file %s: %s", e.fname, e.err) } func OpenFile(fname string) (*os.File, error) { f, err := os.Open(fname) if err != nil { return nil, &FileError{fname, err} } return f, nil }
6. 恢复
使用 recover()
2. Interface erreur
erreur
permet à différents types d'erreurs d'être compatibles entre eux. Nous pouvons envelopper les erreurs pour fournir du contexte en utilisant la syntaxe %w
. 🎜🎜🎜Cas pratique 1 :🎜🎜func OpenFile(fname string) *os.File { defer func() { if r := recover(); r != nil { fmt.Printf("recover: %s\n", r) } }() f, err := os.Open(fname) if err != nil { panic(err) } return f }🎜🎜3. Vérifier les erreurs🎜🎜🎜Nous pouvons utiliser
== nil
pour vérifier les erreurs. Si nil
, cela signifie qu'il n'y a pas d'erreur. 🎜🎜🎜Cas pratique 2 :🎜🎜rrreee🎜🎜4. Protection contre les erreurs🎜🎜🎜La syntaxe de protection contre les erreurs (if err := f(); err != nil { ... }
) est fournie Une manière simplifiée de gérer les erreurs. 🎜🎜🎜Cas pratique 3 :🎜🎜rrreee🎜🎜5. Types personnalisés🎜🎜🎜Nous pouvons créer des types personnalisés pour représenter les erreurs et fournir des informations supplémentaires. 🎜🎜🎜Cas pratique 4 :🎜🎜rrreee🎜🎜6. Récupération🎜🎜🎜Utilisez recover()
pour récupérer la fonction en cas de panique. 🎜🎜🎜Cas pratique 5 :🎜🎜rrreeeCe 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!