Como criar minha própria exceção personalizada em Java?
Exceções personalizadas são úteis para definir erros específicos em uma aplicação, tornando o código mais organizado e fácil de entender. Em Java, podemos criar uma nova classe de exceção herdando de Exception
(para exceções verificadas) ou RuntimeException
(para exceções não verificadas).
1. Criando uma Exceção Personalizada
Para criar uma exceção personalizada, basta estender Exception
ou RuntimeException
.
Exemplo de Exceção Personalizada Verificada (Checked Exception
)
class SaldoInsuficienteException extends Exception {
public SaldoInsuficienteException(String mensagem) {
super(mensagem);
}
}
Aqui, a classe SaldoInsuficienteException
representa um erro ao tentar sacar dinheiro de uma conta bancária sem saldo suficiente.
2. Lançando e Capturando a Exceção Personalizada
class ContaBancaria {
private double saldo;
public void sacar(double valor) throws SaldoInsuficienteException {
if (valor > saldo) {
throw new SaldoInsuficienteException("Saldo insuficiente para saque de R$" + valor);
}
saldo -= valor;
}
}
public class TesteExcecaoPersonalizada {
public static void main(String[] args) {
ContaBancaria conta = new ContaBancaria();
try {
conta.sacar(500);
} catch (SaldoInsuficienteException e) {
System.out.println("Erro: " + e.getMessage());
}
}
}
Explicação: O método
sacar()
verifica se há saldo suficiente antes de permitir a operação. Se não houver, ele lança a exceção personalizada, que é capturada nocatch
.
3. Criando uma Exceção Não Verificada (Unchecked Exception
)
Se a exceção for causada por erro de lógica do programador, pode ser melhor herdar de RuntimeException
.
class IdadeInvalidaException extends RuntimeException {
public IdadeInvalidaException(String mensagem) {
super(mensagem);
}
}
Neste caso, o compilador não obriga o uso de try-catch
para capturar essa exceção.
4. Quando Usar Exceções Personalizadas?
Tipo de Exceção | Quando Usar |
---|---|
Checked Exception (extends Exception) |
Para erros previsíveis que devem ser tratados |
Unchecked Exception (extends RuntimeException) |
Para erros de programação que podem ser evitados |
Conclusão
Criar exceções personalizadas permite tratar erros específicos de forma organizada. O uso correto melhora a clareza do código, facilitando a manutenção e depuração. A escolha entre Exception
e RuntimeException
depende da necessidade de forçar o tratamento do erro ou não.
Por que usar exceções personalizadas melhora a organização do código?
Exceções personalizadas são essenciais para aplicações robustas. Em um sistema de pagamentos, podemos criar exceções para tratar falhas como transações inválidas ou problemas de autenticação. Isso evita mensagens genéricas de erro e melhora a experiência do usuário, garantindo que os problemas sejam detectados e resolvidos com mais eficiência.
Algumas aplicações:
- Melhora a legibilidade do código
- Facilita a depuração e manutenção
- Criação de regras específicas para a aplicação
- Evita o uso de exceções genéricas
Dicas para quem está começando
- Herde
Exception
para exceções verificadas eRuntimeException
para não verificadas - Crie mensagens descritivas na exceção personalizada
- Evite exceções genéricas como
Exception
, prefira exceções específicas - Use exceções personalizadas para regras de negócio importantes
- Registre logs quando uma exceção for lançada para facilitar a depuração
Contribuições de Rodrigo Farias