Middle
O que acontece se iniciar uma goroutine e nela chamar panic? A goroutine irá parar ou toda a aplicação irá parar?
sobes.tech IA
Resposta da IA
Se ocorre um panic numa goroutine, essa goroutine em particular irá parar, mas toda a aplicação no geral não irá terminar automaticamente. O pânico numa goroutine não leva à paragem de todas as goroutines ou do programa, a menos que atinja o nível raiz e fique sem tratamento.
Para evitar o encerramento abrupto da aplicação, pode usar recover dentro da mesma goroutine ou na função que a chama, para capturar o pânico e tratá-lo.
Exemplo:
func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Pânico capturado na goroutine:", r)
}
}()
panic("algo correu mal")
}()
Neste exemplo, o pânico não levará à paragem de toda a aplicação, sendo tratado dentro da goroutine.