🧠 Tópico: Use try-catch and throw statements

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

TipoExemploObrigatório tratar?
CheckedIOException, SQLException✅ Sim
UncheckedNullPointerException, 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

  1. CIOException é checked e precisa ser tratado.
  2. B – Checked exceptions são obrigatórias para tratar ou declarar com throws.
  3. Athrow é a forma correta de lançar exceções.
  4. C – O catch genérico antes impede o mais específico.
  5. Dfinally sempre executa.