Avatar ·

Excepciones checked y unchecked en Java: ¿cuál es la diferencia y cómo usarlas?

Hola a todos. Empecé a estudiar Java y no logro entender la diferencia entre excepciones checked (verificadas) y unchecked (no verificadas). Leí la documentación, pero en la práctica sigo confundiéndome. Por ejemplo, escribo un método simple que lee un archivo: ```java public void readFile(String path) { FileReader file = new FileReader(path); BufferedReader reader = new BufferedReader(file); String line = reader.readLine(); System.out.println(line); } ``` El compilador se queja de `FileReader` y `readLine()` — dice que hay que manejar `FileNotFoundException` y `IOException`. Lo envuelvo en un `try-catch` y funciona. Pero luego escribo un método que divide números: ```java public int divide(int a, int b) { return a / b; } ``` Si paso `b = 0`, el programa falla con `ArithmeticException`, pero el compilador no exige manejar nada. ¿Por qué? ¿Cuál es la lógica? ¿Cuándo usar `throws` y cuándo `try-catch`? ¿Y cómo diseñar correctamente mis propias excepciones — heredar de `Exception` o de `RuntimeException`?