O multi-catch permite capturar diferentes tipos de exceções usando um único bloco catch.
✔️ Menos código repetitivo
✔️ Tratamento centralizado
✔️ Mais legível e organizado
Pense no Kakashi usando um único jutsu defensivo (como o Kamui) para se defender de vários ataques simultâneos.
Um único movimento → múltiplos perigos neutralizados. ⚔️🔥
try {
String valor = null;
System.out.println(valor.length()); // NullPointerException
int[] vetor = new int[3];
System.out.println(vetor[5]); // ArrayIndexOutOfBoundsException
} catch (NullPointerException | ArrayIndexOutOfBoundsException e) {
System.err.println("⚠️ Ataque detectado: " + e.getMessage());
}
As exceções no multi-catch não podem ter relação de herança direta entre si.
Ex.: não pode usar Exception | IOException (pois IOException é filha de Exception).
A variável e se torna "effectively final", ou seja: você não pode reatribuir ela.
try-with-resources é usado com classes que implementam AutoCloseable ou Closeable.
Ele garante que o recurso será fechado automaticamente, mesmo que ocorra exceção dentro do bloco.