Sobes.tech
Junior — Middle

Explique el mecanismo de interacción entre las funciones panic, defer y recover en el lenguaje de programación Go.

sobes.tech AI

Respuesta de la IA

En Go, las funciones panic, defer y recover están relacionadas con el manejo de errores y situaciones excepcionales.

  • panic — provoca la finalización abrupta de la función actual y comienza el proceso de "pánico", que se propaga por la pila de llamadas, llamando a las funciones defer aplazadas.
  • defer — pospone la ejecución de una función hasta que la función actual finalice, permitiendo realizar limpieza o procesamiento después de un panic.
  • recover — permite "capturar" un pánico dentro de una función aplazada y evitar que el programa termine.

Ejemplo:

func ejemplo() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recuperado de pánico:", r)
        }
    }()

    fmt.Println("Antes del pánico")
    panic("algo salió mal")
    fmt.Println("Esto no se ejecutará")
}

Aquí, panic provoca un error, defer con recover lo captura y el programa continúa funcionando sin fallar.