Sobes.tech
Junior — Middle

¿En qué consiste la necesidad de usar la función recover dentro de defer en Go?

sobes.tech AI

Respuesta de la IA

En Go, la función recover se utiliza para capturar pánicos (panic) y evitar que el programa termine de manera abrupta. Sin embargo, recover solo funciona si se llama dentro de una función diferida (defer).

El uso de recover dentro de defer permite:

  • Manejar de forma segura un pánico, por ejemplo, registrando el error o limpiando recursos.
  • Continuar la ejecución del programa después de un pánico, si es posible.

Ejemplo:

func safeFunction() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recuperado de pánico:", r)
        }
    }()
    // Código que puede causar panic
    panic("algo salió mal")
}

Si se llama a recover fuera de defer, no atrapará el pánico y el programa terminará de forma abrupta. Por eso, recover siempre se coloca dentro de defer para un manejo correcto de situaciones excepcionales.