Sobes.tech
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().