Sobes.tech
Junior — Middle

Spiega il meccanismo di interazione tra le funzioni panic, defer e recover nel linguaggio di programmazione Go.

sobes.tech AI

Risposta dell'AI

In Go, le funzioni panic, defer e recover sono legate alla gestione degli errori e delle situazioni eccezionali.

  • panic — provoca la terminazione improvvisa della funzione corrente e avvia il processo di "paniс", che si propaga lungo lo stack di chiamate chiamando le funzioni defer ritardate.
  • defer — ritarda l'esecuzione di una funzione fino all'uscita dalla funzione corrente, consentendo di eseguire pulizie o elaborazioni dopo un panic.
  • recover — permette di "catturare" un panic all'interno di una funzione ritardata e di impedire che il programma termini.

Esempio:

func esempio() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recuperato da panic:", r)
        }
    }()

    fmt.Println("Prima del panic")
    panic("qualcosa è andato storto")
    fmt.Println("Questo non verrà eseguito")
}

Qui, panic provoca un errore, defer con recover lo cattura e il programma continua a funzionare senza crash.