Sobes.tech
Middle

Que se passe-t-il si vous lancez une goroutine et appelez panic dedans ? La goroutine s'arrêtera-t-elle ou toute l'application s'arrêtera-t-elle ?

sobes.tech IA

Réponse de l'IA

Si une panic se produit dans une goroutine, cette goroutine en particulier s’arrêtera, mais toute l’application dans son ensemble ne se terminera pas automatiquement. La panique dans une goroutine ne provoque pas l’arrêt de toutes les goroutines ou du programme, sauf si elle atteint le niveau racine et reste non gérée.

Pour éviter la fermeture inattendue de l’application, vous pouvez utiliser recover à l’intérieur de la même goroutine ou dans la fonction appelante, pour intercepter la panique et la gérer.

Exemple:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panic capturé dans la goroutine:", r)
        }
    }()
    panic("quelque chose a mal tourné")
}()

Dans cet exemple, la panique ne provoquera pas l’arrêt de toute l’application, mais sera gérée à l’intérieur de la goroutine.