Depuración: entender los errores en vez de tenerles miedo
Cómo leer un stack trace, los errores más comunes de Java, Python y JavaScript y cómo arreglarlos, y cómo usar el debugger.
Un error no es un fracaso: es el ordenador diciéndote exactamente qué le pasa y dónde. Aprender a leer ese mensaje es la habilidad que más te va a ahorrar tiempo en toda tu vida programando.
Cómo se lee un stack trace
El stack trace (traza de la pila) es la lista de llamadas que estaban activas cuando reventó el programa. Se lee de arriba abajo:
- Primera línea: el tipo de error y un mensaje. Esto es lo que buscas en Google.
- Líneas siguientes: el camino de llamadas. La primera que apunta a un archivo tuyo (no de una librería) es donde mirar.
- El número de línea (
Main.java:4,app.py, line 3) te lleva al sitio exacto.
Los errores más comunes
Elige uno para ver el mensaje real, por qué pasa y cómo se arregla:
❌ Lo que falla
✅ Arreglado
El método: divide y vencerás
- Reproduce el error de forma fiable. Si no sabes cuándo pasa, no puedes arreglarlo.
- Lee el mensaje entero. De verdad. La respuesta suele estar ahí.
- Aísla. Comenta la mitad del código. ¿Sigue el error? Está en la otra mitad. Repite.
- Imprime valores.
System.out.println(x),print(x),console.log(x)justo antes de la línea que falla. ¿Vale lo que crees? - Un cambio cada vez. Si tocas cinco cosas y funciona, no sabes cuál era.
Diccionario rápido de errores
| Mensaje | Casi siempre significa |
|---|---|
NullPointerException (Java) | usaste una variable que vale null |
NameError / ReferenceError | nombre mal escrito o variable no declarada |
IndexError / ArrayIndexOutOfBounds | pediste una posición que no existe en la lista |
KeyError | esa clave no está en el diccionario |
TypeError: ... is not a function | llamaste como función algo que no lo es (o typo) |
Cannot read properties of undefined | el objeto no llegó; llega undefined |
SyntaxError / IndentationError | falta un :, un ), una , o mala sangría |
CORS (navegador) | el servidor no permite peticiones desde tu dominio |
El debugger
Mejor que llenar el código de print: pon un breakpoint (punto de ruptura) en una línea y el programa se para ahí. Entonces puedes:
- ver el valor de todas las variables en ese instante,
- avanzar línea a línea (step over / step into),
- ver la pila de llamadas.
En VS Code: pon el ratón a la izquierda del número de línea, aparece un punto rojo, y pulsa F5. En el navegador: pestaña Sources de las DevTools (F12).
Comprueba lo aprendido
Cannot read properties of undefined (reading 'nombre') — ¿qué revisas?