Maison > développement back-end > Golang > Mesures préventives dans la gestion des erreurs de la fonction Golang

Mesures préventives dans la gestion des erreurs de la fonction Golang

王林
Libérer: 2024-05-01 10:54:01
original
785 Les gens l'ont consulté

Voici 5 précautions dans la gestion des erreurs de la fonction GoLang : Utilisez les erreurs sentinelles pour indiquer des situations spécifiques. Déclarez et renvoyez la même erreur dans la signature de la fonction pour simplifier votre code. Évitez de renvoyer nil et utilisez plutôt des valeurs d'erreur explicites. Utilisez l'instruction defer pour libérer automatiquement les ressources après le retour de la fonction. Consigne les erreurs à des fins de débogage et de dépannage.

Mesures préventives dans la gestion des erreurs de la fonction Golang

Précautions dans la gestion des erreurs de la fonction GoLang

La gestion des erreurs est un concept crucial dans GoLang qui permet de garantir que votre programme peut toujours s'exécuter normalement dans des circonstances inattendues. Ce guide couvrira diverses précautions pour vous aider à éviter les pièges courants de gestion des erreurs.

1. Utiliser les erreurs Sentinel

Les erreurs Sentinel sont un ensemble de valeurs d'erreur spéciales utilisées pour représenter des situations spécifiques. En utilisant les erreurs sentinelles, vous pouvez transmettre des informations d’erreur spécifiques de manière plus concise.

import "errors"

var NilError = errors.New("nil value")
Copier après la connexion

2. Réutiliser les erreurs

Déclarer et renvoyer la même erreur dans une signature de fonction simplifie souvent le code. Cela évite de créer et de gérer des objets d'erreur en double.

func GetValue() (int, error) {
    // 处理错误并返回 sameError
    return 0, sameError
}
Copier après la connexion

3. Ne retournez pas zéro

Bien que GoLang vous permette de renvoyer zéro pour indiquer qu'il n'y a pas d'erreur, il s'agit d'une bonne pratique. Au lieu de cela, vous devez utiliser des valeurs d'erreur explicites.

func ValidateEmail(email string) error {
    if !strings.Contains(email, "@") {
         return errors.New("invalid email address")
    }
    return nil // 改为返回明确的错误
}
Copier après la connexion

4. Utilisation defer

L'instruction Defer vous permet de différer l'exécution d'un appel de fonction jusqu'au retour de la fonction. Ceci est utile pour libérer automatiquement des ressources lorsqu'une fonction se termine, quelle que soit l'erreur.

func OpenFile(fname string) (*File, error) {
    f, err := os.Open(fname)
    if err != nil {
        return nil, err
    }
    defer f.Close()
    // 操作文件
    return f, nil
}
Copier après la connexion

5. Journalisation des erreurs

La journalisation des erreurs est un outil précieux pour le débogage et le dépannage. En enregistrant les erreurs et leurs informations contextuelles, vous pouvez accéder à la racine du problème.

import "log"

func SomeFunction() error {
    // 处理错误
    log.Println(err)
    return err
}
Copier après la connexion

Exemple pratique :

Considérez la fonction suivante, utilisée pour obtenir des informations sur l'utilisateur :

func GetUser(id int) (*User, error) {
    u := &User{}
    err := db.QueryRow("SELECT * FROM users WHERE id = ?", id).Scan(u)
    if err != nil {
        return nil, err
    }
    return u, nil
}
Copier après la connexion

En appliquant des précautions, nous pouvons améliorer cette fonction comme suit :

import "errors"

var UserNotFoundError = errors.New("user not found")

func GetUser(id int) (*User, error) {
    u := &User{}
    err := db.QueryRow("SELECT * FROM users WHERE id = ?", id).Scan(u)
    if err == nil {
        return u, nil
    } else if err == sql.ErrNoRows {
        return nil, UserNotFoundError
    }
    return nil, err
}
Copier après la connexion

En utilisant les erreurs sentinelles et en gérant correctement les erreurs courantes, nous Rendre la gestion des erreurs de la fonction plus robuste et plus facile à comprendre.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal