Saltar al contenido
mensajes-de-error.en · devschool

Entender mensajes de error en inglés

Lección 8 de 23 · 11 min de lectura · Actualizado el

En esta lección
  1. La estructura de un error
  2. Error, warning y otros niveles
  3. Palabras clave de los errores
  4. Leer un error paso a paso
  5. Códigos de estado HTTP
  6. Errores frecuentes
  7. Resumen

Cuando un programa falla, te habla en inglés. Y lo hace con frases muy cortas y muy repetitivas. La buena noticia es que no hace falta traducirlas palabra por palabra: basta con reconocer la estructura del mensaje y unas cuarenta palabras clave. En esta lección verás cómo se organiza un error, qué es un stack trace, en qué se diferencian un error y un aviso y qué significa cada palabra importante. Todos los mensajes que ves aquí están sacados de ejecutar código real.

Para aprender el método de depuración (reproducir, aislar, arreglar), mira Depurar JavaScript con DevTools. Aquí nos centramos en entender el idioma.

La estructura de un error

Casi todos los errores tienen tres partes, aunque cambie el orden según el lenguaje.

TypeError: Cannot read properties of undefined (reading 'name')
    at showUser (app.js:2:15)
    at loadProfile (app.js:5:10)
    at Object.<anonymous> (app.js:7:1)
ParteEjemploQué te dice
Type (tipo)TypeErrorLa familia del problema
Message (mensaje)Cannot read properties of undefined (reading 'name')Qué ha pasado, en una frase
Location (lugar)app.js:2:15Archivo, línea y columna
Stack traceLas líneas con atQuién llamó a quién hasta llegar aquí

Traducción del mensaje: “No se pueden leer propiedades de undefined (al leer name)”. Es decir, intentaste hacer algo.name y algo valía undefined.

Cómo leerlo: de arriba abajo

  1. Mira el tipo y el mensaje: la primera línea. Te dice qué.
  2. Mira la primera línea con at: es el lugar exacto del fallo. Te dice dónde.
  3. Sube por el resto de líneas at: es la cadena de llamadas que llevó hasta ahí. Te dice por qué camino.

En JavaScript la traza se lee de la llamada más reciente a la más antigua: showUser fue llamada por loadProfile, y esta por el código principal. En Python, en cambio, la traza se lee de arriba abajo, de la más antigua a la más reciente, y el mensaje va al final:

Traceback (most recent call last):
  File "app.py", line 7, in <module>
    print(total({"tent": 80}, ["tent", "rope"]))
  File "app.py", line 5, in total
    return sum(get_price(prices, n) for n in names)
  File "app.py", line 2, in get_price
    return prices[name]
KeyError: 'rope'

Traceback (most recent call last) significa “traza (la llamada más reciente, al final)”. Tienes que ir a la última línea para leer el error: KeyError: 'rope', “error de clave: ‘rope’”. Y justo encima, el lugar: File "app.py", line 2, in get_price (archivo app.py, línea 2, en la función get_price).

Java tiene el mismo estilo que JavaScript: error arriba y llamadas debajo.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
	at Stk.a(Stk.java:1)
	at Stk.b(Stk.java:1)
	at Stk.main(Stk.java:1)

“Excepción en el hilo ‘main’: el índice 3 está fuera de los límites para una longitud de 3”. Las líneas con at son la pila: método a llamado por b, llamado por main.

Nota: el stack (/stak/) es la pila de llamadas: cada función que se ejecuta se apila encima de la anterior. El trace (/treis/) es el rastro. Stack trace se pronuncia /stak treis/ y se traduce como “traza de la pila”.

Error, warning y otros niveles

No todo lo que sale en rojo o amarillo es igual de grave.

InglésPronunciaciónSignificado¿Detiene el programa?
error/érror/error: algo ha falladoNormalmente sí
exception/eksépshon/excepción: un error que se puede capturarSi no se captura, sí
warning/uórnin/aviso: algo sospechoso, pero sigueNo
deprecated/déprikeitid/obsoleto: funciona hoy, pero se eliminaráNo
info/ínfo/informaciónNo
debug/dibág/mensajes para depurarNo
fatal/féitl/fatal: no se puede continuarSí
crash/crash/colapso: el programa se caeSí

Un ejemplo real de un deprecation warning de Python:

DeprecationWarning: this function is deprecated

“Aviso de obsolescencia: esta función está obsoleta”. No es un error, pero te avisa de que debes buscar otra forma de hacerlo.

Un error de compilación (compile error) se detecta antes de ejecutar el programa. Un error de ejecución (runtime error, /rántaim/) ocurre mientras se ejecuta. Los errores de sintaxis (syntax error) son fallos al escribir el código; los errores lógicos (logic errors) son los más difíciles: el programa funciona, pero hace algo equivocado.

Palabras clave de los errores

Estas palabras aparecen en casi todos los mensajes. Apréndelas en bloque.

Esperar y encontrar

InglésPronunciaciónSignificadoEjemplo real
expected/ekspéctid/se esperaba';' expected (Java)
unexpected/anekspéctid/inesperadoUnexpected token ';' (JS)
found/fáund/encontradoexpected a number, found a string
missing/mísin/faltamissing 1 required positional argument (Python)
required/rikuáierd/obligatoriorequired field
not found/not fáund/no encontradoFile not found
no such/nóu sach/no existe talno such table: usres (SQL)
unknown/annóun/desconocidoUnknown column

Ejemplos reales:

SyntaxError: Unexpected token ';'

“Error de sintaxis: símbolo (token) inesperado ’;’”. Has puesto un ; donde el lenguaje no lo esperaba.

TypeError: f() missing 1 required positional argument: 'b'

“A f() le falta 1 argumento posicional obligatorio: b”. Llamaste a la función con menos argumentos de los que necesita.

Valores y tipos

InglésPronunciaciónSignificadoEjemplo real
undefined/andifáind/sin definirx is not defined
null/nal/nulo, vacíoCannot read properties of null
invalid/inválid/no válidoInvalid array length
illegal/ilíguel/ilegal, no permitidoillegal operation on a directory
incompatible/incompátibol/incompatibleincompatible types
cannot / can’t/cánot/, /cant/no puedeCannot read properties
not a function/not a fánkshon/no es una funciónp.calcular is not a function
not defined/not difáind/no definidototl is not defined
must be/mast bi/debe sermust be of type string
already exists/olrédi egzísts/ya existetable users already exists

Permisos y recursos

InglésPronunciaciónSignificadoEjemplo real
permission denied/permíshon dináid/permiso denegadoEACCES: permission denied
access denied/ákses dináid/acceso denegadoAccess denied for user 'root' (bases de datos)
forbidden/forbíden/prohibido403 Forbidden
unauthorized/anózoraizd/no autorizado (sin login)401 Unauthorized
failed/féild/fallóFailed to fetch
refused/rifiúsd/rechazadoECONNREFUSED
timeout/táimaut/tiempo de espera agotadoThe operation was aborted due to timeout
timed out/táimd aut/se agotó el tiempoConnection timed out
unavailable/anavéilabol/no disponible503 Service Unavailable

Ejemplo real al leer un archivo sin permiso:

Error: EACCES: permission denied, open 'secret.txt'

“Error: EACCES: permiso denegado, al abrir secret.txt”. EACCES es el código (access) y open 'secret.txt' es lo que se intentaba hacer.

Y al conectarte a un servidor que no responde:

connect ECONNREFUSED 127.0.0.1:1

“Conexión rechazada (connection refused) a la dirección 127.0.0.1, puerto 1”. Probablemente el servidor no está en marcha.

Tamaños y límites

InglésPronunciaciónSignificadoEjemplo real
out of range/áut of réinch/fuera de rangolist index out of range (Python)
out of bounds/áut of báunds/fuera de límitesIndex 3 out of bounds for length 3 (Java)
overflow/óuverflou/desbordamientostack overflow
exceeded/eksídid/excedidoMaximum call stack size exceeded
too many / too few/tu méni/, /tu fiú/demasiados / muy pocostoo many arguments
maximum / minimum/máksimum/máximo / mínimomaximum recursion depth exceeded
length/lenz/longitudfor length 3
limit/límit/límiterate limit exceeded

Un ejemplo real de recursividad sin fin en Python:

RecursionError: maximum recursion depth exceeded

“Error de recursión: profundidad máxima de recursión excedida”. Una función se llama a sí misma sin parar.

Leer un error paso a paso

Este es el método con un ejemplo real de Python:

IndexError: list index out of range
  1. Tipo: IndexError, un error de índice.
  2. Palabras clave: list, index, out of range.
  3. Traducción: “índice de lista fuera de rango”.
  4. Conclusión: intentaste acceder a una posición que no existe en la lista.

Otro ejemplo, esta vez de JavaScript:

ReferenceError: totl is not defined
  1. Tipo: ReferenceError, un error de referencia.
  2. Palabra clave: is not defined → “no está definido”.
  3. Conclusión: usas un nombre (totl) que no existe. Seguro que querías escribir total.

Consejo: cuando uses el mensaje de error para buscar en internet, copia el texto sin tu nombre de variable ni tus rutas: busca Cannot read properties of undefined en vez de Cannot read properties of undefined (reading 'name') en mi archivo C:\Users\ana\.... Así encuentras más resultados.

Códigos de estado HTTP

Si trabajas con la web, verás números con texto en inglés. Los más comunes:

CódigoTextoSignificado
200OKTodo bien
201CreatedRecurso creado
301Moved PermanentlyLa dirección ha cambiado
400Bad RequestPetición mal formada
401UnauthorizedFalta iniciar sesión
403ForbiddenNo tienes permiso
404Not FoundNo existe
500Internal Server ErrorFallo en el servidor
503Service UnavailableServicio no disponible

Los números que empiezan por 4 indican un problema del cliente (tú); los que empiezan por 5, del servidor.

Errores frecuentes

  • Traducir todo el error con el traductor. Los nombres de tipos (TypeError, KeyError) y las funciones no se traducen: tradúcelo tú por partes.
  • Mirar solo la primera línea en Python. El error está en la última. Léelo de abajo arriba.
  • Confundir error con warning. Un warning no detiene el programa, pero ignorarlo puede traerte problemas más tarde.
  • Buscar sin comillas un mensaje largo. Si lo pones entre comillas, el buscador busca la frase exacta, y así encuentras antes a quien tuvo el mismo problema.
  • Confundir forbidden con unauthorized. 401 es “no sé quién eres” y 403 es “sé quién eres, pero no tienes permiso”.
  • No mirar la línea y la columna. app.js:2:15 te lleva casi directo al fallo.

Resumen

PalabraSignificado
error / exception / warningfallo / excepción / aviso
expected / unexpectedesperado / inesperado
missing / requiredfalta / obligatorio
not found / no suchno encontrado / no existe tal
not defined / undefinedno definido / sin valor
invalid / illegalno válido / no permitido
permission denied / forbiddenpermiso denegado / prohibido
failed / refused / timeoutfalló / rechazado / tiempo agotado
out of range / out of boundsfuera de rango / de límites
overflow / exceededdesbordamiento / excedido

Ahora que conoces las palabras, vemos los errores reales más comunes de cada lenguaje en Errores por lenguaje.

Pon a prueba lo que has aprendido

[Inglés] ¿Qué te dice este error?
TypeError: Cannot read properties of undefined (reading 'name')

[Inglés] En una traza de Python (Traceback), ¿dónde está el mensaje del error?

[Inglés] ¿Qué significa permission denied?

[Inglés] ¿Qué diferencia hay entre un error y un warning?

¿Te ha quedado claro? Márcala y verás tu progreso en el explorador.