Cargando...

Excepciones en Java

Mantén un array pequeño int llamado slots que guarda 2 y 4. Imprime slots[0] para que la pantalla muestre 2. Luego aprende qué pasa si pides slots[5] en su lugar: Java lanza ArrayIndexOutOfBoundsException y el programa se detiene. Compila primero Alarm.java y ejecuta java Alarm con el archivo seguro. Ver una parada en tiempo de ejecución por una regla rota — no por un punto y coma faltante — es lo que enseña esta página. Deja try y catch para la página siguiente.

Una lectura segura que termina

Una excepción es la forma de Java de decir que una regla se rompió mientras el programa corría. Hasta ahora la mayoría de demos imprimían una línea clara y terminaban en silencio. Esta página guarda primero una demo silenciosa, luego una demo que se detiene con un nombre de excepción.
Abre Alarm.java. Mantén el nombre de la clase pública Alarm para que coincida con el nombre del archivo. Borra restos de ArrayList<Integer>, nums.add(9), demos Crate y cualquier for-each sobre oak y pine. Borra también cualquier Scanner o nextLine. El programa no debe esperar escritura. Esta página no necesita línea de import.
Dentro de main, guarda dos enteros:
int[] slots = {2, 4};
Luego imprime el primer hueco:
System.out.println(slots[0]);
Los números de hueco empiezan en cero. El hueco cero guarda 2. Guarda antes de compilar.

Alarm safe slots zero

java
public class Alarm {
    public static void main(String[] args) {
        int[] slots = {2, 4};
        System.out.println(slots[0]);
    }
}

Desde la carpeta que tiene Alarm.java, ejecuta javac Alarm.java. Cuando coinciden paréntesis, llaves y puntos y coma, javac no escribe ninguna línea propia. Luego ejecuta java Alarm — no java Alarm.java. Quita la extensión .java del comando de ejecución.
El programa debe imprimir una línea y detenerse: 2. No debe pedirte que escribas. Si la terminal espera entrada de teclado, aún queda una llamada nextLine de un ejercicio anterior en un archivo. Borra esa llamada y mantén el array más System.out.println(slots[0]);.
Recorre la ejecución una vez. Java empieza en Alarm.main. El array guarda dos valores. La impresión lee el hueco cero. La pantalla muestra 2. Nada más debe imprimirse. Si ves 9, aún corre una demo wrappers de Crate — cambia a java Alarm. Si ves 4, imprimiste slots[1]; el archivo seguro de enseñanza mantiene slots[0].

Un índice malo que lanza

Cambia solo la línea de impresión para pedir un hueco que nunca se escribió: slots[5]. El array sigue teniendo solo dos huecos. En tiempo de ejecución Java lanza una excepción en lugar de imprimir un número.

Alarm bad index throws

java
public class Alarm {
    public static void main(String[] args) {
        int[] slots = {2, 4};
        System.out.println(slots[5]);
    }
}

Compila con javac Alarm.java y luego ejecuta java Alarm. Esta vez el programa no imprime 2. La terminal muestra un informe de error que nombra ArrayIndexOutOfBoundsException. La ejecución se detiene. Las líneas que imaginabas después de esa impresión no corren, porque la excepción ya detuvo el programa. Nota que javac aún puede tener éxito — el índice malo es un problema de tiempo de ejecución, no un punto y coma faltante.
Esa parada es la lección. No arreglas el índice en esta página con try. Aprendes a reconocer que una regla rota en tiempo de ejecución se vuelve excepción y termina el camino normal. Lee el nombre de la excepción en el informe. Mantén el archivo de índice malo solo para ver esa parada. Prefiere el archivo seguro cuando quieras una pantalla quieta con 2. Si vuelves el índice malo a slots[0], regresa la pantalla quieta; eso prueba que la parada vino del índice, no del nombre de clase Alarm.
No trates el informe de pila como un resultado normal de println. Java te dice qué salió mal. La ortografía del tipo de excepción importa cuando hablas de ella: ArrayIndexOutOfBoundsException. Decir solo «error» es demasiado vago para esta lección — mantén el nombre completo del tipo al describir la parada.

El resto de wrappers no es este crash

Un tercer archivo te recuerda la lista Integer de la página anterior. Esa demo imprime 9 y termina. No es la historia de la excepción.

Alarm wrappers leftover contrast

java
import java.util.ArrayList;

public class Alarm {
    public static void main(String[] args) {
        ArrayList<Integer> nums = new ArrayList<Integer>();
        nums.add(9);
        System.out.println(nums.get(0));
    }
}

Ese contraste imprime 9 y termina sin lanzar. Úsalo solo para separar un camino wrappers terminado del camino Alarm de índice malo. Para esta lección de excepciones, el par de enseñanza es la impresión segura slots[0] y la impresión que lanza slots[5]. No inventes try ni catch alrededor de ninguna demo de array en esta página.

Comparado con arrays y con wrappers

En la página de arrays te quedaste dentro de huecos escritos. Esta página sale a propósito para que veas la excepción. En la página de wrappers una lista de Integer imprimió 9 sin crash. Eso sigue valiendo como historia. Para esta página mantén Alarm y la historia del índice del array.
Existen otras excepciones — por ejemplo dividir entre cero puede lanzar ArithmeticException. Esta página guarda un nombre claro: ArrayIndexOutOfBoundsException de un índice malo. Hoy no necesitas un catálogo de cada tipo de excepción. Un ejemplo sólido basta antes de que la página siguiente enseñe el manejo.
Cuando aún haya archivos viejos Crate.java cerca, déjalos o bórralos solo si confunden qué clase ejecutas. Ejecuta java Alarm después de compilar el archivo de la demo que quieres. Cambia de archivo a propósito para que la impresión segura y la que lanza no se mezclen en un solo main mientras estudias.

Lo que queda para try y catch

Esta página muestra que una excepción puede detener un programa en tiempo de ejecución. La página siguiente presenta try y catch para que manejes algunos problemas sin terminar toda la ejecución. Quédate aquí reconociendo la parada y el nombre de la excepción. No inventes aún un bloque catch como requisito en esta página.

Antes de try y catch

Puedes imprimir slots[0] de {2, 4} y ver 2. Puedes imprimir slots[5] y ver la ejecución detenerse con ArrayIndexOutOfBoundsException. Compila Alarm.java y ejecuta java Alarm por turno para cada demo guardada. La excepción nombró con claridad la regla rota. La página siguiente es try y catch, donde un camino manejado puede continuar después de algunos errores.
Mantén la demo segura para una pantalla quieta. Mantén el índice malo para ver la parada. Mantén try fuera de esta página. Esos tres hábitos son el punto de control antes de seguir. Cuando puedas nombrar ArrayIndexOutOfBoundsException tras la ejecución de índice malo de java Alarm, las excepciones cumplieron su trabajo en esta lección y estás listo para el siguiente tema sobre manejo.

🧠 Pon a Prueba tu Conocimiento

Listo para Empezar

Pon a Prueba tu Conocimiento

Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema

❓
6
Preguntas
🎯
70%
Para Aprobar
♾️
∞
Tiempo
🔄
∞
Intentos

📝 Instrucciones

  • Lee cada pregunta cuidadosamente
  • Selecciona la mejor respuesta para cada pregunta
  • Puedes repetir el quiz tantas veces como quieras
  • Tu progreso se mostrará en la parte superior