Esse tópico cobre como capturar, lançar e manipular exceções em Java.
✅ 1. try-catch básico
try {
// Código que pode lançar exceção
int resultado = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Erro: divisão por zero!");
}
✅ 2. catch múltiplos
try {
String s = null;
System.out.println(s.length());
} catch (NullPointerException e) {
System.out.println("NullPointer!");
} catch (Exception e) {
System.out.println("Outro erro!");
}
🔸 O mais específico deve vir antes do mais genérico.
✅ 3. multi-catch (Java 7+)
try {
// ...
} catch (IOException | SQLException e) {
System.out.println("Erro de IO ou SQL");
}
🚫 Atenção: Não pode usar multi-catch com exceções relacionadas (ex: IOException | Exception – não compila).
✅ 4. finally
Executa sempre, com ou sem exceção.
try {
System.out.println("Try");
} finally {
System.out.println("Sempre executa");
}
✅ 5. throw (lançar exceção)
public void verificaIdade(int idade) {
if (idade < 18) {
throw new IllegalArgumentException("Menor de idade");
}
}
✅ 6. Checked x Unchecked
| Tipo | Exemplo | Obrigatório tratar? |
|---|---|---|
| Checked | IOException, SQLException | ✅ Sim |
| Unchecked | NullPointerException, ArithmeticException | ❌ Não |
✅ 7. throws em métodos
public void lerArquivo() throws IOException {
// pode lançar IOException
}
🧪 Quiz – 5 Questões Rápidas
1. Qual das exceções abaixo é checked?
A) NullPointerException
B) ArithmeticException
C) IOException
D) IllegalArgumentException
2. O que acontece se você não tratar uma exceção checked?
A) Compila, mas dá erro em tempo de execução
B) O compilador obriga você a tratar
C) O Java ignora
D) O bloco finally não é executado
3. Qual dessas opções lança uma exceção?
A) throw new IOException();
B) throws new IOException();
C) throw IOException;
D) throw IOException();
4. O que acontece se colocar um catch(Exception) antes de catch(NullPointerException)?
A) Erro em tempo de execução
B) Funciona normalmente
C) Não compila
D) Ignora a exceção
5. O que sempre será executado, mesmo que uma exceção ocorra?
A) try
B) catch
C) throw
D) finally
✅ Gabarito Comentado
- C –
IOExceptioné checked e precisa ser tratado. - B – Checked exceptions são obrigatórias para tratar ou declarar com
throws. - A –
throwé a forma correta de lançar exceções. - C – O catch genérico antes impede o mais específico.
- D –
finallysempre executa.