Junior — Middle
Peut-on capturer et gérer les paniques à l'intérieur d'un appel defer en Go ?
sobes.tech IA
Réponse de l'IA
En Go, vous pouvez utiliser defer pour gérer les paniques, mais l'appel à defer lui-même ne capture pas la panique ; il faut la capturer à l'intérieur de la fonction différée en utilisant recover().
Exemple :
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Panique capturée et traitée :", r)
}
}()
panic("quelque chose a mal tourné")
}
Ici, recover() est appelé à l'intérieur de la fonction différée et permet de capturer la panique survenue dans safeCall. Ainsi, il n'est pas possible de "capturer" directement dans defer, mais on peut la gérer à l'intérieur de la fonction différée avec recover().