Sobes.tech
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().