Sobes.tech
Junior — Middle

Quelles conséquences faut-il attendre si une panique se produit dans une goroutine?

sobes.tech IA

Réponse de l'IA

Si une panique (panic) se produit dans une goroutine, l'exécution de cette goroutine est interrompue, et le processus de déballage de la pile (stack unwinding) commence, durant lequel les fonctions différées (defer) sont appelées.

Si la panique n'est pas gérée (par exemple, avec recover dans une fonction différée), elle entraînera la terminaison de tout le programme.

Il est important de comprendre qu'une panique dans une goroutine n'affecte pas directement les autres goroutines — elles continuent de fonctionner, sauf si la panique entraîne l'arrêt de tout le programme.

Exemple de gestion de panique:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panique capturée et gérée:", r)
        }
    }()
    panic("quelque chose a mal tourné")
}()