Exceções em Java
Hierarquia de Exceções
Tipos de Exceções
1. Checked Exceptions
Verificadas em tempo de compilação
Devem ser declaradas ou tratadas
Exemplos:
IOException
,SQLException
public void readFile() throws IOException {
FileReader file = new FileReader("arquivo.txt");
// código para ler arquivo
}
2. Unchecked Exceptions (RuntimeException)
Não verificadas em tempo de compilação
Geralmente indicam erros de programação
Exemplos:
NullPointerException
,ArrayIndexOutOfBoundsException
public void processArray(int[] array) {
// Pode lançar NullPointerException ou ArrayIndexOutOfBoundsException
int value = array[10];
}
3. Errors
Problemas graves na JVM
Não devem ser tratados pelo programa
Exemplos:
OutOfMemoryError
,StackOverflowError
Exceções Comuns
NullPointerException
String str = null;
str.length(); // Lança NullPointerException
ArrayIndexOutOfBoundsException
int[] array = new int[5];
array[10] = 1; // Lança ArrayIndexOutOfBoundsException
IllegalArgumentException
public void setAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("Idade não pode ser negativa");
}
}
Boas Práticas
Seja Específico
Use exceções específicas em vez de genéricas
Ajuda na identificação e tratamento do problema
Documente as Exceções
/**
* @throws IllegalArgumentException se o valor for negativo
* @throws IOException em caso de erro de leitura
*/
public void processValue(int value) throws IOException {
// implementação
}
Mantenha a Granularidade
Lance exceções no nível mais baixo possível
Trate no nível apropriado da aplicação
Exemplos Práticos
Exemplo 1: Validação de Entrada
public class UserValidator {
public void validateUsername(String username) {
if (username == null || username.trim().isEmpty()) {
throw new IllegalArgumentException("Username não pode ser vazio");
}
if (username.length() < 3) {
throw new IllegalArgumentException("Username deve ter no mínimo 3 caracteres");
}
}
}
Exemplo 2: Operações de Arquivo
public class FileProcessor {
public String readFile(String path) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
return reader.readLine();
}
}
}
Próximos Passos
Aprenda sobre Try-Catch e Finally
Explore Exceções Personalizadas
Estude Try-with-Resources
Recursos Adicionais
26 June 2025