Junior — Middle
Quelle est la nécessité d'utiliser la fonction recover à l'intérieur de defer en Go?
sobes.tech IA
Réponse de l'IA
En Go, la fonction recover est utilisée pour intercepter les paniques (panic) et empêcher l'arrêt brutal du programme. Cependant, recover ne fonctionne que si elle est appelée à l'intérieur d'une fonction différée (defer).
L'utilisation de recover dans un defer permet de:
- Gérer en toute sécurité une panique, par exemple en enregistrant l'erreur ou en nettoyant des ressources.
- Continuer l'exécution du programme après une panique, si cela est possible.
Exemple:
func safeFunction() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recoveré d'une panique:", r)
}
}()
// Code pouvant provoquer une panic
panic("quelque chose a mal tourné")
}
Si recover est appelée en dehors de defer, elle ne capturera pas la panique, et le programme se terminera de manière abrupte. C'est pourquoi recover doit toujours être placée à l'intérieur d'un defer pour une gestion correcte des situations exceptionnelles.