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 funzionideferritardate.defer— ritarda l'esecuzione di una funzione fino all'uscita dalla funzione corrente, consentendo di eseguire pulizie o elaborazioni dopo unpanic.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.