Sobes.tech
Junior — Middle

Expliquez le mécanisme d'interaction entre les fonctions panic, defer et recover dans le langage de programmation Go.

sobes.tech IA

Réponse de l'IA

En Go, les fonctions panic, defer et recover sont liées à la gestion des erreurs et des situations exceptionnelles.

  • panic — provoque la terminaison immédiate de la fonction en cours et lance le processus de "panic", qui remonte la pile d'appels en appelant les fonctions defer différées.
  • defer — retarde l'exécution d'une fonction jusqu'à la sortie de la fonction en cours, permettant de faire du nettoyage ou du traitement après un panic.
  • recover — permet de "capturer" un panic à l'intérieur d'une fonction différée et d'empêcher le programme de se terminer.

Exemple :

func exemple() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recoveré du panic:", r)
        }
    }()

    fmt.Println("Avant le panic")
    panic("quelque chose a mal tourné")
    fmt.Println("Cela ne sera pas exécuté")
}

Ici, panic provoque une erreur, defer avec recover la capture et le programme continue de fonctionner sans planter.