Pides la edad y escriben una palabra
Tu programa pregunta la edad. Una persona escribe "diecisiete" con letras. Otra reparte la cuenta entre cero amigos.
El programa intenta seguir y se rompe. Java avisa con un error y se para.
Hoy aprendes a leer ese aviso y a evitar que tu programa se pare.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Excepción | El aviso que lanza Java cuando algo sale mal mientras el programa funciona. | NumberFormatException |
| try | El bloque donde pones el código que puede fallar. | try { ... } |
| catch | El bloque que se ejecuta si el try falla. Dice qué hacer. | catch (NumberFormatException e) |
| finally | Un bloque que se ejecuta siempre, haya fallado o no. | finally { ... } |
| throw | La orden con la que tú lanzas una excepción. | throw new IllegalArgumentException("...") |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Un programa que se rompe
Una excepción es un aviso de Java. Dice que no pudo hacer lo que le pedías.
Si nadie la atiende, el programa se para en esa línea. Las líneas siguientes ya no se ejecutan.
Prueba a ejecutar el código de abajo y lee el mensaje.
Pruébalo: el programa se rompe
public class Main {
public static void main(String[] args) {
System.out.println("Voy a leer la edad.");
// "diecisiete" no es un número: Java lanza una excepción aquí.
int age = Integer.parseInt("diecisiete");
// Esta línea nunca llega a ejecutarse.
System.out.println("Tienes " + age + " años.");
}
}
Probar y atrapar
Con try dices: "intenta esto". Con catch dices: "si falla, haz esto otro".
Entre paréntesis de catch va el tipo de error que atrapas. Así el programa no se para: sigue después del bloque.
Con finally pones lo que se hace siempre.
Pruébalo: leer una edad con cuidado
public class Main {
static int readAge(String text) {
try {
return Integer.parseInt(text);
} catch (NumberFormatException e) {
System.out.println("\"" + text + "\" no es un número.");
return -1;
} finally {
System.out.println("Fin de la lectura.");
}
}
public static void main(String[] args) {
System.out.println(readAge("17"));
System.out.println(readAge("diecisiete"));
}
}
Ejemplo resuelto: qué pasa en cada llamada
| Llamada | ¿Falla el try? | Qué escribe, en orden |
|---|---|---|
| readAge("17") | No | Fin de la lectura. y después 17 |
| readAge("diecisiete") | Sí, no es un número | "diecisiete" no es un número., Fin de la lectura. y después -1 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Repaso rápido
Inténtalo
Repaso rápido
3 preguntasTus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.