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 que se utiliza para situaciones verdaderamente excepcionales en las que tu programa encuentra un error irrecuperable y debe detenerse de inmediato. A diferencia de los errores habituales, que gestionas con elegancia, panic se reserva para fallos catastróficos que indican que hay algo fundamentalmente incorrecto en la lógica o el entorno de tu 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 habitual de Go de devolver errores que pueden ser gestionados por el código que realiza la llamada.
En Go idiomático, panic se usa rara vez. La comunidad de Go prefiere firmemente el manejo explícito de errores mediante valores de return en lugar del manejo de errores basado en panic. Puedes encontrarte con panic en situaciones como acceder a un array fuera de sus límites, desreferenciar un puntero nil o cuando una biblioteca detecta un estado imposible que indica un error de programación.
La mayoría de los programas de Go deberían gestionar los errores correctamente mediante la interfaz de errores estándar sobre la que has estado aprendiendo. Solo deberías considerar panic cuando realmente no haya ninguna 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 comportamientosPractica por tu cuenta: Compilador de Go online