Un mensaje en rojo
Pulsas Ejecutar y salen letras rojas. Muchos alumnos cierran la ventana sin leer.
Pero ese mensaje es el mejor amigo de un programador. Dice dónde falla el programa y por qué.
Hoy aprendes a leerlo. No hace falta saber inglés: solo tres cosas que mirar.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Mensaje de error | El texto que escribe Java cuando algo falla. | error: cannot find symbol |
| Línea | El número de la línea donde Java encontró el fallo. | Main.java:4 |
| Error de compilación | Un fallo que Java encuentra antes de ejecutar. El programa no arranca. | Falta un punto y coma |
| Excepción | Un fallo que ocurre con el programa en marcha. El programa se para. | Dividir entre cero |
| Error lógico | El programa funciona, pero da un resultado equivocado. | Un descuento que sube el precio |
| Causa | La razón del fallo. | Escribiste goal y no goals |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Tres cosas que mirar
Java escribe sus mensajes en inglés. No pasa nada. Busca estas tres cosas:
- El número de línea, por ejemplo
Main.java:3. - La palabra que sigue a error, que dice la clase de fallo.
- La flecha ^, que señala el sitio exacto.
Pruébalo: lee este error
public class Main {
public static void main(String[] args) {
int total = 5 + 3
System.out.println(total);
// Este código tiene un error a propósito.
// Ejecuta y busca: el número de línea y la flecha.
// Arréglalo y ejecuta otra vez.
}
}
El truco: mira la línea de antes
Java dice la línea donde se dio cuenta del fallo. A veces el fallo está en la línea anterior.
Con el punto y coma pasa justo eso. Java llega a la línea siguiente y entonces ve que algo falta.
Si no ves nada en la línea del mensaje, mira la de arriba.
Los mensajes más comunes
| Mensaje de Java | Qué significa | Cómo se arregla |
|---|---|---|
| ';' expected | Falta un punto y coma. | Ponlo al final de la línea. |
| cannot find symbol | Java no conoce ese nombre. | Mira si lo escribiste igual que arriba. |
| incompatible types | Metes un dato donde no cabe. | Cambia el tipo o el valor. |
| possible lossy conversion | Un decimal no cabe en un int. | Usa double. |
| missing return statement | Falta devolver un valor. | Añade return. |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Pruébalo: un nombre mal escrito
public class Main {
public static void main(String[] args) {
int goals = 3;
System.out.println("Goles: " + goal);
// Lee el mensaje: cannot find symbol.
// La palabra symbol dice cuál es el nombre. Corrígelo.
}
}
Errores con el programa en marcha
Algunos fallos no se ven al compilar. Aparecen cuando el programa ya está funcionando.
Java los llama excepciones. Empiezan con Exception in thread "main". La palabra siguiente dice qué pasó. Debajo, at Main.main(Main.java:5) te da la línea.
Pruébalo: dividir entre cero
public class Main {
public static void main(String[] args) {
int sweets = 12;
int friends = 0;
System.out.println("Preparando el reparto...");
System.out.println(sweets / friends);
System.out.println("Reparto terminado");
// Mira qué líneas se escriben y cuáles no.
// Pon friends = 4 y ejecuta otra vez.
}
}
El error que no avisa
Hay un tercer tipo y es el peor. El programa compila y se ejecuta. Pero el resultado está mal.
Java no puede avisarte: no sabe qué querías. Tú tienes que comprobar el resultado.
Una buena costumbre es calcular el resultado a mano antes de ejecutar.
Pruébalo: ¿cuánto pagas?
public class Main {
public static void main(String[] args) {
double price = 20;
// Descuento del 10 %: pagas el 90 % del precio.
double toPay = price * 0.1;
System.out.println("Pagas " + toPay + " euros");
// Debería salir 18.0, pero sale otra cosa.
// Encuentra el fallo y corrígelo.
}
}
Ejemplo resuelto: los tres tipos de error
| Tipo | Cuándo aparece | Quién lo avisa | Ejemplo |
|---|---|---|---|
| De compilación | Antes de ejecutar | Java, con un mensaje | Falta un ; |
| Excepción | Con el programa en marcha | Java, con un mensaje | 12 / 0 |
| Lógico | Al ver el resultado | Solo tú | Pagar 2 euros y no 18 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.