Semestre 02, 2026
Evento anómalo durante la ejecución que interrumpe el flujo normal del programa.
Throwable
├─ Error (fallos graves: no capturar)
│ ├─ OutOfMemoryError
│ └─ StackOverflowError
└─ Exception
├─ RuntimeException (no chequeadas)
│ ├─ NullPointerException
│ └─ ArithmeticException
├─ IOException (chequeadas)
└─ SQLException
Verificadas por el compilador. Obligan a try/catch o throws. Recuperables. Ej.: IOException, SQLException.
Heredan de RuntimeException. Indican bugs. No obligan a capturarlas. Ej.: NullPointerException.
try {
Files.readString(Path.of("data.txt"));
} catch (FileNotFoundException e) {
System.out.println("Archivo no encontrado");
} catch (IOException e) {
System.out.println("Error de I/O");
}
Los catch van del más específico al más general.
try {
Files.readString(Path.of("data.txt"));
} catch (NoSuchFileException | AccessDeniedException e) {
System.out.println("Archivo inaccesible");
} catch (IOException e) {
e.printStackTrace();
}
Siempre se ejecuta (haya o no excepción). Útil para liberar recursos.
FileReader fr = null;
try {
fr = new FileReader("data.txt");
} catch (IOException e) {
System.out.println("Error de lectura");
} finally {
if (fr != null) fr.close();
}
Genera una excepción al detectar una condición inválida.
public int dividir(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException("b != 0");
}
return a / b;
}
Declara que el método puede lanzar una excepción hacia quien lo invoque. Obligatorio para las chequeadas.
public void cargar() throws IOException {
Files.readString(Path.of("config.json"));
}
Extiende Exception (chequeada) o RuntimeException (no chequeada).
public class SaldoInsuficienteEx extends RuntimeException {
public SaldoInsuficienteEx(String mensaje) {
super(mensaje);
}
}
public class OperacionBancariaEx extends Exception {
private final String cuenta;
private final double monto;
public OperacionBancariaEx(String cta, double monto, String msg) {
super(msg);
this.cuenta = cta;
this.monto = monto;
}
}
catch vacío).IllegalArgumentException.SaldoInsuficienteException.