Junior — Middle
¿Se puede capturar y manejar pánicos dentro de una llamada defer en Go?
sobes.tech AI
Respuesta de la IA
En Go, puedes usar defer para manejar pánicos, pero la llamada a defer en sí no captura el pánico; debes capturar el pánico dentro de la función diferida usando recover().
Ejemplo:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Pánico capturado y manejado:", r)
}
}()
panic("algo salió mal")
}
Aquí, recover() se llama dentro de la función diferida y permite capturar el pánico que ocurre en safeCall. De esta manera, no se puede "capturar" directamente en defer, pero sí se puede manejar dentro de la función diferida con recover().