🔥 PANIC

Uso de panic en Go

En el lenguaje Go, la función panic se utiliza para detener la ejecución de un programa cuando ocurre una situación inesperada o crítica. Es importante comprender cómo manejar panic y recover en Go para evitar que el programa termine abruptamente sin control. Cuando se invoca panic, el flujo normal se interrumpe, se ejecutan las funciones diferidas y finalmente el programa finaliza mostrando un mensaje de error y el stack trace.

A continuación se muestra un ejemplo de panic en tiempo de ejecución en Go:

package main

import "fmt"

func main() {
    fmt.Println("Antes de iniciar pánico")
    panic("Iniciar pánico")
    fmt.Println("Esta línea de código no es alcanzada")
}

La salida será:

Antes de iniciar panico
panic: Iniciar panico

goroutine 1 [running]:
main.main()
    /.../061_panic/main.go:7 +0x79
exit status 2

Es fundamental conocer la diferencia entre panic y error en Go. Mientras que los errores (error) se utilizan para manejar situaciones recuperables y permiten que el programa continúe, el uso de panic está reservado para condiciones en las que no es posible continuar de manera segura.

¿Cuándo usar panic en Go?

El uso de panic debe limitarse a casos excepcionales, como cuando el sistema entra en un estado irrecuperable. Por ejemplo:

  • Si continuar la ejecución puede causar daños mayores o inconsistencias, es preferible detener el programa inmediatamente.
  • Cuando se presenta un escenario no contemplado que no puede ser gestionado de otra forma.

Por ello, una de las mejores prácticas para evitar panic en Go es preferir el manejo de errores tradicional y reservar panic solo para situaciones verdaderamente críticas.


Conclusión

El uso de panic en Go debe ser cuidadoso y reservado para casos donde no existe una alternativa segura. Comprender su funcionamiento y las diferencias con el manejo de errores tradicional es clave para desarrollar aplicaciones robustas y confiables.


Cuestionario de repaso

  1. ¿Cuál es la función principal de panic en Go?
  2. ¿Qué diferencia existe entre un error y un panic en Go?
  3. ¿En qué situaciones se recomienda utilizar panic?
  4. ¿Qué sucede con las funciones diferidas (defer) cuando ocurre un panic?
  5. Menciona una buena práctica para evitar el uso innecesario de panic.

Otros Artículos