Sobes.tech
Junior — Middle

Que consequências devem ser esperadas se ocorrer um pânico na goroutine?

sobes.tech IA

Resposta da IA

Se ocorre um pânico (panic) numa goroutine, a execução dessa goroutine é interrompida e inicia-se o processo de descompactação da pilha (stack unwinding), durante o qual as funções diferidas (defer) são chamadas.

Se o pânico não for tratado (por exemplo, usando recover numa função diferida), ele levará ao encerramento de toda a programa.

É importante entender que um pânico numa goroutine não afeta diretamente outras goroutines — elas continuam a trabalhar, a menos que o pânico cause a paragem de toda a programa.

Exemplo de tratamento de pânico:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Pânico capturado e tratado:", r)
        }
    }()
    panic("algo correu mal")
}()