Programación

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.

Un traceback se lee de abajo arriba.1. Última línea: tipo de error y motivo 2. Encima: archivo y línea donde ocurrió 3. Más arriba: desde dónde se llamóPASO A PASO1PASO 1Última línea: tipode error y motivo2PASO 2Encima: archivo ylínea dondeocurrió3FINALMás arriba: desdedónde se llamó
Un traceback se lee de abajo arriba.

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:

  1. La última línea dice el tipo de error y el motivo: has dividido entre cero.
  2. Encima, dónde ocurrió: línea 2, dentro de la función media.
  3. 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.

Algunos errores frecuentes y lo que suelen significar.Error: SyntaxError; NameError; TypeError; ValueError. Suele significar: Falta un paréntesis o comillas; Nombre mal escrito; Tipo equivocado; Valor inválidoCOMPARATIVAErrorSyntaxErrorNameErrorTypeErrorValueErrorSuele significarFalta un paréntesis o comillasNombre mal escritoTipo equivocadoValor inválido
Algunos errores frecuentes y lo que suelen significar.

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):

  1. Haz clic a la izquierda del número de línea: aparece un punto rojo, el punto de interrupción.
  2. Pulsa F5 para ejecutar con el depurador.
  3. 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 para encontrar cualquier fallo.1. Reprodúcelo siempre igual 2. Lee el mensaje completo 3. Formula una hipótesis 4. Compruébala con el depurador 5. Reduce el código al mínimo que fallaPASO A PASO1PASO 1Reprodúcelo siempre igual2PASO 2Lee el mensaje completo3PASO 3Formula una hipótesis4PASO 4Compruébala con el depurador5FINALReduce el código al mínimo quefalla
Un método para encontrar cualquier fallo.

Un método que funciona

  1. Reproduce el error siempre de la misma forma.
  2. Lee el mensaje completo y ve a la línea que indica.
  3. Formula una hipótesis: «creo que notas está vacía».
  4. Compruébala con el depurador o un print, no cambiando el código a ciegas.
  5. Reduce el problema: quita todo lo que no haga falta hasta quedarte con el mínimo código que falla.
  6. 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.