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