Cómo leer un error y depurar tu código
Entiende qué te dice un error, encuéntralo con puntos de interrupción y evita que el programa se caiga.
Programar es, en buena parte, arreglar errores. Nadie escribe código perfecto a la primera, ni los profesionales: la diferencia está en saber leer lo que el ordenador te dice y buscar el fallo con método, en vez de cambiar cosas al azar hasta que funcione.
Leer un mensaje de error
Cuando un programa de Python falla, muestra un traceback. Por ejemplo:
Traceback (most recent call last):
File "notas.py", line 8, in <module>
print(media(notas))
File "notas.py", line 2, in media
return sum(valores) / len(valores)
ZeroDivisionError: division by zero
Se lee de abajo arriba:
- La última línea dice el tipo de error y el motivo: has dividido entre cero.
- Encima, dónde ocurrió: línea 2, dentro de la función
media. - Más arriba, desde dónde se llamó: línea 8.
Así ya sabes que la lista notas estaba vacía cuando se llamó a media. En JavaScript la consola del navegador (F12) muestra lo mismo: el mensaje en rojo y, a la derecha, el archivo y la línea, en los que puedes hacer clic.
Los errores que más vas a ver
| Python | JavaScript | Qué suele significar |
|---|---|---|
SyntaxError |
SyntaxError |
Falta un paréntesis, unas comillas o dos puntos |
NameError |
ReferenceError: x is not defined |
Nombre mal escrito o variable sin crear |
TypeError |
TypeError |
Operación con el tipo equivocado (sumar texto y número, llamar a algo que no es una función) |
IndexError / KeyError |
undefined (sin error) |
Posición o clave que no existe |
ValueError |
NaN (sin error) |
Valor con el tipo correcto pero inválido, como int("hola") |
AttributeError |
Cannot read properties of null |
El objeto no tiene eso o está vacío |
Fíjate en que JavaScript a menudo no da error y devuelve undefined o NaN, lo que hace que el fallo aparezca más tarde y en otro sitio.
Capturar errores previsibles
Algunos errores no son fallos de tu código sino situaciones esperables: el usuario escribe letras donde va un número, un archivo no existe, se cae la conexión. Para esos casos se captura la excepción:
try:
edad = int(input("Edad: "))
except ValueError:
print("Escribe la edad con números, por ejemplo 17.")
try {
const datos = JSON.parse(texto);
} catch (error) {
console.error("El JSON no es válido:", error.message);
}
Captura solo los errores que sabes tratar, con su tipo concreto. Un except: vacío que lo atrapa todo esconde los fallos de verdad y los hace mucho más difíciles de encontrar.
Depurar con puntos de interrupción
Llenar el código de print() funciona, pero un depurador es mucho más potente: detiene el programa en la línea que elijas y te deja ver el valor de cada variable en ese momento.
En VS Code (Python, JavaScript y otros):
- Haz clic a la izquierda del número de línea: aparece un punto rojo, el punto de interrupción.
- Pulsa F5 para ejecutar con el depurador.
- Cuando se detenga, mira el panel Variables y avanza línea a línea con F10 (pasar por encima) o F11 (entrar en la función).
En el navegador, abre F12 > Fuentes, abre tu archivo .js y haz clic en el número de línea. También puedes escribir debugger; en el código para que se pare ahí cuando las herramientas estén abiertas.
Un método que funciona
- Reproduce el error siempre de la misma forma.
- Lee el mensaje completo y ve a la línea que indica.
- Formula una hipótesis: «creo que
notasestá vacía». - Compruébala con el depurador o un
print, no cambiando el código a ciegas. - Reduce el problema: quita todo lo que no haga falta hasta quedarte con el mínimo código que falla.
- Si buscas el error en internet, copia la última línea del mensaje sin tus nombres de archivo o variables.
Explicar el problema en voz alta, aunque sea a un patito de goma, sorprendentemente ayuda. Y un asistente de IA puede ayudarte a entender un error, siempre que revises lo que te propone: lo verás en IA para programar.
Fuentes consultadas
- Errores y excepciones (Python Software Foundation)
- Depurar JavaScript (Chrome for Developers (Google))
- Debug code with Visual Studio Code (Microsoft (documentación de Visual Studio Code))
