Maison > développement back-end > Golang > le corps du texte

type d'erreur de capture Golang

WBOY
Libérer: 2023-05-10 09:26:36
original
493 Les gens l'ont consulté

En langage Go, la gestion des erreurs est une tâche importante. La gestion des erreurs signifie que vous devez être en mesure de vérifier que la fonction a effectué l'opération correcte et, dans certains cas, vous devez prendre des mesures pour éviter d'autres erreurs ou dommages. Dans cet article, je discuterai du mécanisme de gestion des erreurs dans Golang et de la manière de détecter les types d'erreurs.

Le mécanisme de gestion des erreurs du langage Go est géré via l'interface d'erreur. Error est un type d'interface prédéfini dans le langage Go, défini comme suit :

type error interface {
    Error() string
}
Copier après la connexion

Tous les types qui implémentent la méthode Error() implémentent l'interface d'erreur et peuvent donc être considérés comme des types d'erreur. En Golang, lorsqu'une fonction ne parvient pas à s'exécuter ou rencontre une erreur, elle renvoie généralement une valeur de type error. Par exemple :

func foo() error {
    if err := doSomething(); err != nil {
        return err
    }
    return nil
}
Copier après la connexion

Dans l'exemple ci-dessus, la fonction foo() renverra une valeur d'erreur lorsque la fonction doSomething() renvoie une erreur, sinon elle renverra zéro.

Lorsque nous utilisons des fonctions, nous pouvons utiliser des instructions if pour vérifier si une erreur se produit et prendre les mesures appropriées si nécessaire. Voici un exemple :

func main() {
    err := foo()
    if err != nil {
        log.Printf("An error occurred: %v", err)
    }
}
Copier après la connexion

Dans le code ci-dessus, si la fonction foo() renvoie une erreur, elle sera journalisée, sinon rien ne sera fait.

Dans certains cas, nous devons vérifier le type d'erreur afin de pouvoir prendre les mesures appropriées. Par exemple, dans une application http, nous pourrions avoir besoin de renvoyer différents codes d'état HTTP en fonction du type d'erreur. Pour ce faire, nous pouvons utiliser des assertions de type pour convertir le type d'erreur en un type d'erreur spécifique. Par exemple :

func handleRequest(w http.ResponseWriter, r *http.Request) {
    …
    if err != nil {
        switch err := err.(type) {
        case *myCustomError:
            http.Error(w, err.Error(), http.StatusBadRequest)
        case *otherCustomError:
            http.Error(w, err.Error(), http.StatusInternalServerError)
        default:
            http.Error(w, err.Error(), http.StatusInternalServerError)
        }
    }
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons d'abord l'assertion de type pour convertir l'erreur en un type d'erreur spécifique. Ensuite, dans l'instruction switch, différents codes d'état HTTP sont renvoyés en fonction du type d'erreur. Si le type d'erreur n'est aucun de ceux connus, nous pouvons renvoyer un code d'état par défaut.

Grâce à l'assertion de type, nous pouvons convertir le type d'erreur en d'autres types spécifiques de types d'erreur. Voici un exemple de code :

type myCustomError struct {
    message string
}

func (e *myCustomError) Error() string {
    return e.message
}

func main() {
    err := &myCustomError{message: "Something went wrong!"}
    if err != nil {
        if customErr, ok := err.(*myCustomError); ok {
            log.Printf("A custom error occurred: %s", customErr.message)
        }
    }
}
Copier après la connexion

Dans cet exemple, nous créons d'abord un type d'erreur personnalisé myCustomError, qui implémente la méthode Error(). Dans la fonction main(), nous convertissons l’erreur en type myCustomError et vérifions son type. Si ce type d'erreur se produit, enregistrez-le. Sinon, aucune action n'est effectuée.

En bref, grâce à l'interface d'erreur et au mécanisme d'assertion de type du langage Go, nous pouvons facilement gérer les erreurs et capturer les types d'erreurs. J'espère que cet article pourra vous aider à mieux comprendre le mécanisme de gestion des erreurs dans le langage Go.

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!