Entendiendo `panic`
Parte de la sección Lógica y Flujo del Journey de GO de Coddy — lección 42 de 68.
En Go, panic es una función integrada utilizada para situaciones verdaderamente excepcionales en las que su programa encuentra un error irrecuperable y debe detenerse de inmediato. A diferencia de los errores regulares que se manejan con elegancia, panic se reserva para fallos catastróficos que indican que algo anda fundamentalmente mal con la lógica o el entorno de su programa.
Cuando se llama a panic, detiene inmediatamente la ejecución normal de la función actual y comienza a desenrollar la pila de llamadas. Esto lo hace muy diferente del enfoque típico de Go de devolver errores que pueden ser manejados por el código que realiza la llamada.
En el Go idiomático, panic se usa raramente. La comunidad de Go favorece fuertemente el manejo explícito de errores a través de valores de retorno en lugar del manejo de errores basado en pánicos. Podrías encontrar panic en situaciones como acceder a un array fuera de los límites, desreferenciar un puntero nil, o cuando una librería detecta un estado imposible que indica un error de programación.
La mayoría de los programas en Go deberían manejar los errores de forma elegante utilizando la interfaz de error estándar sobre la que has estado aprendiendo. panic solo debe considerarse cuando realmente no hay una forma razonable de que tu programa continúe ejecutándose.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Flujo de control avanzado
Switch con `fallthrough`Salir de bucles anidadosContinuar un bucle específicoLa sentencia `goto`Repaso: Control de bucles avanzado4Proyecto: Lista de tareas sencilla
Configuración del proyectoAñadir una tarea7Manejo de errores a fondo
Tipos de error personalizadosEnvolver errores con `%w`Desenvolver con `errors.Is`Desenvolver con `errors.As`Entendiendo `panic`Uso de `recover`Repaso - División segura2Estructuras y Métodos
Definición de métodos en estructurasReceptores de valorReceptores de punteroElegir receptoresMétodos vs FuncionesResumen - Comportamiento de estructuras5Mapas en profundidad
Mapas de StructsPunteros como valores de MapVerificación de Maps NilComparación de MapsResumen - Contador de frecuencia de palabras3Interfaces (Conceptos básicos)
¿Qué es una interfaz?Definir una interfazImplementar una interfazUso de tipos de interfazInterfaz vacíaAserciones de tipoType SwitchResumen: Formas y comportamientos