Maison >développement back-end >Golang >Comment puis-je gérer les paniques en Go avec la fonction « recover() » ?

Comment puis-je gérer les paniques en Go avec la fonction « recover() » ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-19 01:13:02366parcourir

How Can I Handle Panics in Go with the `recover()` Function?

Gérer les paniques avec Recover dans Golang

Lorsqu'une erreur inattendue se produit dans Go, provoquant une panique, elle arrête immédiatement l'exécution du programme. Cependant, la fonction recovery() fournit un moyen de gérer les paniques, permettant aux programmes d'empêcher leur plantage.

Considérez le code suivant, où une panique se produit lorsqu'aucun argument de fichier n'est fourni :

package main

import (
    "fmt"
    "os"
)

func main() {
    file, err := os.Open(os.Args[1])
    if err != nil {
        fmt.Println("Could not open file")
    }
    fmt.Printf("%s", file)
}

Pour gérer cette panique, on peut utiliser la fonction recovery() au sein d'une fonction différée :

func main() {
    defer func() {
        if err := recover(); err != nil {
            fmt.Println("Could not open file")
        }
    }()
    
    file, err := os.Open(os.Args[1])
    if err != nil {
        panic(err)
    }
    fmt.Printf("%s", file)
}

Si une erreur survient lors de l'ouverture du fichier, la panique est captée par la fonction recovery() et le message "Impossible d'ouvrir le fichier" est imprimé au lieu de planter le programme.

Dans Go, la panique ne devrait pas être le mécanisme de gestion des erreurs par défaut. Les contrôles d'erreur explicites sont généralement préférés. Cependant, la fonction recovery() fournit un moyen de gérer avec élégance les cas extrêmes où des paniques sont nécessaires, permettant aux programmes de maintenir un état fonctionnel même lorsque des erreurs inattendues se produisent.

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