Introduction
En Golang, recover
est une fonction intégrée qui peut être utilisée pour récupérer d'un panic
. Ce laboratoire vous permettra de tester votre capacité à utiliser recover
pour gérer les panic
.
This tutorial is from open-source community. Access the source code
💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici
En Golang, recover
est une fonction intégrée qui peut être utilisée pour récupérer d'un panic
. Ce laboratoire vous permettra de tester votre capacité à utiliser recover
pour gérer les panic
.
La fonction mayPanic
dans le code fourni provoquera un panic
lorsqu'elle sera appelée. Votre tâche consiste à modifier la fonction main
pour récupérer du panic
et afficher le message d'erreur.
recover
pour gérer le panic
dans la fonction mayPanic
.panic
se produit.$ go run recover.go
Recovered. Error:
a problem
Voici le code complet ci-dessous :
// Go permet de _récupérer_ d'un `panic`, en utilisant
// la fonction intégrée `recover`. Un `recover` peut
// empêcher un `panic` d'arrêter le programme et le laisser
// continuer l'exécution à la place.
// Un exemple où cela peut être utile : un serveur
// ne veut pas planter si l'une des connexions clientes
// présente une erreur critique. Au lieu de cela, le serveur
// voudrait fermer cette connexion et continuer à servir
// les autres clients. En fait, c'est ce que fait par défaut
// Go's `net/http` pour les serveurs HTTP.
package main
import "fmt"
// Cette fonction provoque un `panic`.
func mayPanic() {
panic("a problem")
}
func main() {
// `recover` doit être appelé dans une fonction différée.
// Lorsque la fonction englobante provoque un `panic`, le
// différé sera activé et un appel à `recover` à l'intérieur
// de celui-ci capturera le `panic`.
defer func() {
if r := recover(); r!= nil {
// La valeur de retour de `recover` est l'erreur levée dans
// l'appel à `panic`.
fmt.Println("Recovered. Error:\n", r)
}
}()
mayPanic()
// Ce code ne sera pas exécuté, car `mayPanic` provoque un `panic`.
// L'exécution de `main` s'arrête au moment du `panic` et
// reprend dans la fermeture différée.
fmt.Println("After mayPanic()")
}
Dans ce laboratoire, vous avez appris à utiliser la fonction recover
pour gérer les panic
en Golang. En utilisant recover
, vous pouvez empêcher votre programme de planter et continuer à exécuter le code.