Middle — Middle+
Explique el mecanismo de recuperación del sistema después de una falla en el contexto del uso de Recover.
sobes.tech AI
Respuesta de la IA
En Go, el mecanismo recover se utiliza para capturar pánicos (panic) y restaurar la ejecución normal del programa. Esto permite que el sistema, tras una falla, no termine de forma abrupta, sino que maneje el error y continúe trabajando.
La idea principal:
- Cuando ocurre un pánico, la ejecución de las funciones se interrumpe y comienza la "desenrollada" de la pila.
- Si en alguna de las funciones llamadas hay una llamada diferida (
defer) que invocarecover(), esta captura el pánico y devuelve el valor del error. - Después de esto, el programa puede manejar el error y continuar con la ejecución.
Ejemplo:
func safeDivide(a, b int) int {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recuperación después del pánico:", r)
}
}()
return a / b // si b == 0, ocurrirá un pánico
}
func main() {
fmt.Println(safeDivide(10, 2)) // 5
fmt.Println(safeDivide(10, 0)) // Recuperación después del pánico: runtime error: integer divide by zero
}
De esta forma, recover ayuda a hacer que el sistema sea resistente a errores inesperados, evitando que termine de forma abrupta.