Errores, debugging y buenas prácticas
Todo código falla alguna vez — la diferencia entre un programador con experiencia y uno que empieza no es que el primero no tenga errores, es que sabe manejarlos, encontrarlos y escribir código que sea más fácil de depurar desde el principio. Hoy cierras los fundamentos del lenguaje con eso: errores, debugging y unas cuantas reglas de estilo que te van a ahorrar disgustos.
Capturar errores con try / catch
Cuando una parte de tu código puede fallar (un dato mal formado, algo que no
existe...), try / catch te permite capturar el
error y decidir qué hacer, en lugar de que la ejecución se detenga en seco:
El bloque de código que puede fallar.
Se ejecuta solo si algo dentro de try lanza un error. error.message tiene el texto del fallo.
Se ejecuta siempre, haya habido error o no. Opcional.
Lanza tu propio error a propósito, con un mensaje que tenga sentido para quien lo lea después.
Tipos de error habituales
Intentas usar un valor de forma incompatible con su tipo — por ejemplo, llamar a un método que no existe en ese valor.
Usas una variable que no existe o no está definida en ese scope.
El código ni siquiera se puede leer: falta una llave, una comilla sin cerrar...
Depurar: cómo encontrar el problema
La herramienta más simple y más usada: ve imprimiendo valores en puntos clave para ver dónde el resultado deja de ser el esperado.
F12 (o clic derecho → Inspeccionar) abre las herramientas de desarrollador, con una pestaña Console para ver errores y un depurador con breakpoints reales.
El mensaje casi siempre dice exactamente qué pasó y en qué línea — es tentador ignorarlo, pero suele ser la pista más rápida.
Si no sabes qué falla, comenta partes del código hasta aislar la línea exacta que causa el problema.
Una técnica real (con ese nombre) muy usada entre programadores: explica tu código en voz alta, línea por línea, a un objeto cualquiera (tradicionalmente un patito de goma). Con frecuencia encuentras el error tú mismo mientras lo explicas, antes de terminar la frase.
Guía de estilo: escribe código que tu yo del futuro entienda
nombreUsuario, no nombre_usuario ni NombreUsuario, para variables y funciones.
Usa const salvo que sepas que vas a reasignar la variable — así el propio código documenta la intención.
let y const cubren todos los casos con reglas de scope más predecibles.
calcularTotalConIva es mejor que calc() o x2(), aunque tengas que escribir más.
2 espacios es lo más habitual en JavaScript — elige uno y no lo mezcles en el mismo proyecto.
Ya lo viste en el módulo de operadores — evita sorpresas de conversión de tipos.
Comprueba lo que has aprendido
1. ¿Cuándo se ejecuta el bloque finally de un try/catch?
2. ¿Qué tipo de error es típico al llamar a un método que no existe en un valor?
3. Según la guía de estilo del módulo, ¿qué deberías usar por defecto: let o const?