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")
}()