Sobes.tech
Junior — Middle

Quali conseguenze ci si devono aspettare se si verifica un panico in una goroutine?

sobes.tech AI

Risposta dell'AI

Se si verifica un panico (panic) in una goroutine, l'esecuzione di questa goroutine viene interrotta e inizia il processo di discesa dello stack (stack unwinding), durante il quale vengono chiamate le funzioni deferred (defer).

Se il panico non viene gestito (ad esempio, con recover in una funzione deferred), provocherà la terminazione di tutto il programma.

È importante capire che un panico in una goroutine non influisce direttamente sulle altre goroutine — esse continuano a funzionare, a meno che il panico non provochi l'arresto di tutto il programma.

Esempio di gestione del panico:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panico catturato e gestito:", r)
        }
    }()
    panic("qualcosa è andato storto")
}()