Los errores más comunes de cada lenguaje en inglés
En esta lección
En la lección anterior viste la estructura general de los errores. Ahora toca la práctica: cada lenguaje tiene sus errores estrella, esos que verás cientos de veces. Aquí tienes los más comunes de JavaScript, Python, Java, PHP y SQL. Todos los mensajes están obtenidos ejecutando código de verdad (Node 22, Python 3, Java 21, PHP 8.4 y SQLite), con su traducción y lo que debes hacer.
Si no has leído Mensajes de error, empieza por ahí: aquí se da por conocido el vocabulario (expected, not defined, out of range…).
Nota: el texto exacto puede variar un poco entre versiones y entre navegadores (Chrome, Firefox y Safari redactan algunos errores de forma distinta). La idea es la misma.
JavaScript
JavaScript lanza errores con un tipo (TypeError, ReferenceError, SyntaxError, RangeError) y un mensaje.
1. Cannot read properties of undefined
const user = undefined;
console.log(user.name);
TypeError: Cannot read properties of undefined (reading 'name')
- Traducción: “No se pueden leer propiedades de
undefined(al leername)”. - Qué pasa:
userno tiene valor y has intentado acceder a.name. Connull, el mensaje diceof null. - Solución: averigua por qué
useresundefined(¿no llegó el dato?). Si puede faltar, usauser?.name.
2. x is not a function
const order = {};
order.calculate();
TypeError: order.calculate is not a function
- Traducción: “
order.calculateno es una función”. - Solución: revisa que el nombre esté bien escrito y que ese método exista en ese tipo de dato.
3. x is not defined
console.log(totl);
ReferenceError: totl is not defined
- Traducción: “
totlno está definido”. - Solución: casi siempre es una errata (
total) o una variable declarada fuera de alcance.
4. Assignment to constant variable
const rate = 1;
rate = 2;
TypeError: Assignment to constant variable.
- Traducción: “Asignación a una variable constante”.
- Solución: si el valor debe cambiar, declara con
leten lugar deconst.
5. Cannot access ‘x’ before initialization
console.log(x);
let x = 1;
ReferenceError: Cannot access 'x' before initialization
- Traducción: “No se puede acceder a
xantes de su inicialización”. - Solución: declara y asigna la variable antes de usarla.
6. Unexpected token / Unexpected identifier
const a = ;
SyntaxError: Unexpected token ';'
- Traducción: “Símbolo inesperado
;”. - Solución: hay algo que falta o sobra justo antes. Mira la línea indicada y la anterior.
Otras variantes del mismo grupo: SyntaxError: Unexpected identifier 'b' (palabra inesperada), SyntaxError: missing ) after argument list (falta ) después de los argumentos) y SyntaxError: Identifier 'a' has already been declared (el identificador a ya ha sido declarado).
7. Unexpected end of JSON input
JSON.parse("");
SyntaxError: Unexpected end of JSON input
- Traducción: “Fin inesperado de la entrada JSON”.
- Qué pasa: intentas analizar un JSON vacío o cortado. Con
JSON.parse("{name: 'Ana'}"), Node diceExpected property name or '}' in JSON at position 1.
8. Maximum call stack size exceeded
function f() { f(); }
f();
RangeError: Maximum call stack size exceeded
- Traducción: “Se ha superado el tamaño máximo de la pila de llamadas”.
- Solución: hay una recursividad sin condición de parada.
Python
Los errores de Python tienen nombres muy descriptivos y el mensaje final es corto.
1. NameError: name ‘x’ is not defined
print(nombre)
NameError: name 'nombre' is not defined
- Traducción: “El nombre ‘nombre’ no está definido”.
- Solución: mira si hay una errata o si olvidaste crear la variable.
2. IndexError: list index out of range
x = [1, 2, 3]
x[5]
IndexError: list index out of range
- Traducción: “índice de lista fuera de rango”.
- Solución: comprueba la longitud con
len(x). Recuerda que el último índice eslen(x) - 1.
3. KeyError
d = {"a": 1}
d["b"]
KeyError: 'b'
- Traducción: “Error de clave: ‘b’”.
- Solución: esa clave no existe. Usa
d.get("b")para obtenerNoneen vez de un error.
4. TypeError: can only concatenate str
"5" + 3
TypeError: can only concatenate str (not "int") to str
- Traducción: “Solo se puede concatenar
str(noint) constr”. - Solución: convierte uno de los dos:
"5" + str(3)oint("5") + 3.
5. ValueError: invalid literal
int("abc")
ValueError: invalid literal for int() with base 10: 'abc'
- Traducción: “Literal no válido para
int()en base 10: ‘abc’”. - Solución: el texto no es un número. Valida antes o usa
try / except.
6. AttributeError
None.append(1)
AttributeError: 'NoneType' object has no attribute 'append'
- Traducción: “El objeto ‘NoneType’ no tiene el atributo ‘append’”.
- Qué pasa: la variable vale
None, normalmente porque una función no hizoreturn.
7. IndentationError y SyntaxError
if True
pass
SyntaxError: expected ':'
- Traducción: “Se esperaba ’:’”.
- Otros:
IndentationError: unexpected indent(sangría inesperada) ySyntaxError: '(' was never closed(el paréntesis(nunca se cerró).
8. ModuleNotFoundError, ZeroDivisionError, FileNotFoundError
ModuleNotFoundError: No module named 'modulo_que_no_existe'
ZeroDivisionError: division by zero
FileNotFoundError: [Errno 2] No such file or directory: 'nada.txt'
- Traducciones: “No hay ningún módulo llamado…” (instálalo con
pip installo revisa el nombre); “división por cero”; “No existe el archivo o directorio: ‘nada.txt’” (revisa la ruta).
También es común: TypeError: f() missing 1 required positional argument: 'b' (a f() le falta un argumento posicional obligatorio).
Java
Java distingue errores de compilación (los ves al compilar con javac) y de ejecución (excepciones al correr el programa).
Errores de compilación
1. ’;’ expected
int edad = 20
Bad1.java:3: error: ';' expected
int edad = 20
^
- Traducción: “Se esperaba ’;’”. Te señala con
^dónde falta.
2. cannot find symbol
System.out.println(total);
Bad2.java:5: error: cannot find symbol
System.out.println(total);
^
symbol: variable total
location: class Bad2
- Traducción: “No se puede encontrar el símbolo: variable
totalen la claseBad2”. - Solución: errata, falta declarar la variable, o falta un
import.
3. incompatible types
int n = "hola";
error: incompatible types: String cannot be converted to int
- Traducción: “Tipos incompatibles: un
Stringno se puede convertir aint”. - Variante:
incompatible types: possible lossy conversion from double to int(“posible conversión con pérdida de double a int”).
4. missing return statement
error: missing return statement
- Traducción: “falta la sentencia return”. Un método con tipo de retorno debe devolver algo en todos los caminos.
Y otros típicos: variable u might not have been initialized (la variable podría no haberse inicializado), variable x is already defined in method main(String[]) (la variable ya está definida), cannot assign a value to final variable k (no se puede asignar un valor a una variable final), non-static method hi() cannot be referenced from a static context (un método no estático no se puede usar desde un contexto estático) y reached end of file while parsing (se llegó al final del archivo al analizar: falta cerrar una llave).
Excepciones en ejecución
5. NullPointerException
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null
- Traducción: “No se puede invocar
String.length()porque<parameter1>es nulo”. - Solución: una variable vale
null. Comprueba de dónde viene o compruebaif (s != null).
6. ArrayIndexOutOfBoundsException
java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
- Traducción: “El índice 3 está fuera de los límites para una longitud de 3”. Un array de 3 elementos tiene índices 0, 1 y 2.
7. NumberFormatException y ClassCastException
java.lang.NumberFormatException: For input string: "abc"
java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Integer
- Traducciones: “Para la cadena de entrada: ‘abc’” (no es un número) y “la clase
Stringno se puede convertir a la claseInteger”.
8. ArithmeticException y UnsupportedOperationException
java.lang.ArithmeticException: / by zero
java.lang.UnsupportedOperationException
- Traducciones: “división por cero” y “operación no soportada” (por ejemplo, añadir a una lista creada con
List.of, que es inmutable).
Nota: si no ves el nombre de la variable en un
NullPointerException(<local1>,<parameter1>), es porque se compiló sin información de depuración. Compilando conjavac -gverás el nombre real.
PHP
PHP 8 mezcla warnings (avisos que no paran la ejecución) y errores fatales (que sí).
1. Undefined variable
echo $nada;
Warning: Undefined variable $nada
- Traducción: “Variable no definida
$nada”. Solución: inicializa la variable antes de usarla.
2. Undefined array key
$a = [1];
echo $a[3];
Warning: Undefined array key 3
- Traducción: “Clave de array no definida: 3”. Usa
isset($a[3])o$a[3] ?? "default".
3. Call to undefined function
Fatal error: Uncaught Error: Call to undefined function nofunc()
- Traducción: “Error fatal: error no capturado: llamada a una función no definida
nofunc()”.
4. Attempt to read property on null
$o = null;
echo $o->x;
Warning: Attempt to read property "x" on null
- Traducción: “Intento de leer la propiedad ‘x’ de
null”. Y si llamas a un método:Call to a member function metodo() on null.
5. Type errors
TypeError: g(): Argument #1 ($n) must be of type int, string given
- Traducción: “El argumento nº 1 (
$n) debe ser de tipoint, se ha dado unstring”.
Y los de argumentos: ArgumentCountError: Too few arguments to function g(), 0 passed ... and exactly 1 expected (“Muy pocos argumentos… se pasaron 0 y se esperaba exactamente 1”).
6. Parse error
<?php $a = 5 echo $a;
PHP Parse error: syntax error, unexpected token "echo"
- Traducción: “Error de análisis: error de sintaxis, símbolo inesperado
echo”. Suele faltar un;. También verásunexpected end of file(fin de archivo inesperado: falta cerrar algo).
7. Division by zero y fallos al incluir archivos
DivisionByZeroError: Division by zero
Failed opening required 'nada.php'
- Traducciones: “División por cero” y “No se pudo abrir el archivo requerido”.
SQL
Los errores de SQL cambian según el motor (MySQL, PostgreSQL, SQLite), pero los conceptos coinciden. Estos mensajes son de SQLite.
| Mensaje | Traducción | Qué hacer |
|---|---|---|
no such table: usres | no existe la tabla usres | Revisa el nombre de la tabla |
no such column: nombre | no existe la columna nombre | Revisa el nombre de la columna |
near "selct": syntax error | cerca de selct: error de sintaxis | Mira cerca de esa palabra: errata o coma que falta |
incomplete input | entrada incompleta | La consulta termina antes de tiempo (falta algo tras WHERE) |
UNIQUE constraint failed: users.email | falló la restricción de unicidad | Estás insertando un valor que ya existe |
NOT NULL constraint failed: users.email | falló la restricción de no nulo | Falta un valor obligatorio |
FOREIGN KEY constraint failed | falló la restricción de clave foránea | Referencias un registro que no existe |
ambiguous column name: id | nombre de columna ambiguo | Indica la tabla: users.id |
table users already exists | la tabla ya existe | Usa CREATE TABLE IF NOT EXISTS |
table users has 3 columns but 2 values were supplied | la tabla tiene 3 columnas pero se dieron 2 valores | Indica las columnas o aporta todos los valores |
En PostgreSQL y MySQL verás mensajes parecidos: relation "usres" does not exist, Unknown column 'nombre' in 'field list' o Duplicate entry 'a@x.com' for key 'email'.
Un ejemplo completo:
INSERT INTO users(email, age) VALUES ('a@x.com', 20);
INSERT INTO users(email, age) VALUES ('a@x.com', 30);
UNIQUE constraint failed: users.email
La segunda sentencia viola la restricción de unicidad: el correo ya existía. Pronúnciala así: “unique constraint failed on users dot email” (constraint /konstréint/ = restricción).
Errores frecuentes
- Mirar solo la palabra
errory no el resto. El tipo (TypeError,KeyError) ya te da media solución. - Confundir
undefined(JavaScript) conNone(Python) onull. Cada lenguaje usa su propio “nada”. - Ignorar las líneas
symbol:ylocation:de Java. Son las que dicen qué no encuentra y dónde. - Creer que un warning de PHP no importa. Un
Undefined array keyhoy es un bug mañana. Corrígelo. - No leer “near” en SQL.
near "selct"te señala la palabra en torno a la cual falla. - Copiar el error entero al buscar. Quita rutas y nombres de tu proyecto antes de buscarlo.
Resumen
| Lenguaje | Errores estrella |
|---|---|
| JavaScript | Cannot read properties of undefined, is not a function, is not defined, Unexpected token |
| Python | NameError, IndexError, KeyError, TypeError, ValueError, AttributeError |
| Java | ';' expected, cannot find symbol, incompatible types, NullPointerException, ArrayIndexOutOfBoundsException |
| PHP | Undefined variable, Undefined array key, Call to undefined function, Parse error |
| SQL | no such table, no such column, syntax error, constraint failed |
Siguiente lección: cómo moverte por la documentación oficial, en Leer documentación.
Pon a prueba lo que has aprendido
¿Te ha quedado claro? Márcala y verás tu progreso en el explorador.