Junior — Middle
È possibile catturare e gestire le paniche all'interno di una chiamata defer in Go?
sobes.tech AI
Risposta dell'AI
In Go, puoi usare defer per gestire le paniche, ma la chiamata a defer stessa non cattura la panica; devi catturare la panica all'interno della funzione differita usando recover().
Esempio:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Panic catturata e gestita:", r)
}
}()
panic("qualcosa è andato storto")
}
Qui, recover() viene chiamato all'interno della funzione differita e permette di catturare la panica avvenuta in safeCall. In questo modo, le paniche non possono essere "catturate" direttamente in defer, ma possono essere gestite all'interno della funzione differita con recover().