Sobes.tech
Middle

¿Qué sucede si se inicia una goroutine y en ella se llama a panic? ¿La goroutine se detendrá o se detendrá toda la aplicación?

sobes.tech AI

Respuesta de la IA

Si ocurre un panic en una goroutine, esa goroutine en particular se detendrá, pero toda la aplicación en general no se cerrará automáticamente. El pánico en una goroutine no provoca la detención de todas las goroutines o del programa, a menos que alcance el nivel raíz y quede sin manejar.

Para evitar que la aplicación se cierre de forma inesperada, se puede usar recover dentro de la misma goroutine o en la función que la llama, para capturar el pánico y manejarlo.

Ejemplo:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Pánico capturado en la goroutine:", r)
        }
    }()
    panic("algo salió mal")
}()

En este ejemplo, el pánico no provocará que toda la aplicación se detenga, sino que será manejado dentro de la goroutine.