Maison >développement back-end >Golang >Guide pratique de gestion des erreurs de la fonction Golang

Guide pratique de gestion des erreurs de la fonction Golang

WBOY
WBOYoriginal
2024-05-04 11:54:021043parcourir

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 gestion des erreurs de la fonction Golang

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

L'interface 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 :🎜🎜rrreee

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn