Go Récupérer


Exemple

Récupérer comme son nom l'indique peut tenter de se remettre d'une panic . La récupération doit être tentée dans une instruction différée car le flux d'exécution normal a été arrêté. L'instruction de recover doit apparaître directement dans l'enceinte de la fonction différée. Les instructions de récupération dans les fonctions appelées par des appels de fonctions différés ne seront pas honorées. L'appel recover() renverra l'argument fourni à la panique initiale, si le programme est en train de paniquer. Si le programme n'est pas en train de paniquer, recover() renverra nil .

package main

import "fmt"

func foo() {
    panic("bar")
}

func bar() {
    defer func() {
        if msg := recover(); msg != nil {
            fmt.Printf("Recovered with message %s\n", msg)
        }
    }()
    foo()
    fmt.Println("Never gets executed")
}

func main() {
    fmt.Println("Entering main")
    bar()
    fmt.Println("Exiting main the normal way")
}

Sortie:

Entering main
Recovered with message bar
Exiting main the normal way