Como forçar uma exceção personalizada a ser lançada?
Exceções personalizadas permitem definir erros específicos para uma aplicação, melhorando o tratamento de erros e a clareza do código. Em Java, podemos criar nossas próprias exceções estendendo Exception
(para exceções verificadas) ou RuntimeException
(para não verificadas).
1. Criando uma Exceção Personalizada
Podemos criar uma classe de exceção personalizada estendendo Exception
para forçar seu tratamento.
class SaldoInsuficienteException extends Exception {
public SaldoInsuficienteException(String mensagem) {
super(mensagem);
}
}
2. Lançando uma Exceção Personalizada
Para lançar a exceção personalizada, usamos throw
dentro do código.
public class ContaBancaria {
private double saldo;
public void sacar(double valor) throws SaldoInsuficienteException {
if (valor > saldo) {
throw new SaldoInsuficienteException("Saldo insuficiente: " + saldo);
}
saldo -= valor;
}
}
Explicação: Se o usuário tentar sacar mais do que o saldo disponível, a exceção
SaldoInsuficienteException
será lançada.
3. Capturando a Exceção com try-catch
Sempre que uma exceção verificada (Exception
) for lançada, o código que a chama precisa tratá-la.
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());
}
}
}
4. Criando uma Exceção Não Verificada (RuntimeException
)
Se quisermos criar uma exceção que não precisa ser tratada obrigatoriamente, podemos estender RuntimeException
.
class ErroDeAutenticacaoException extends RuntimeException {
public ErroDeAutenticacaoException(String mensagem) {
super(mensagem);
}
}
5. Quando Usar Exceções Personalizadas?
Caso de Uso | Tipo de Exceção |
---|---|
Erros de negócios previsíveis | Exception (Verificada) |
Erros inesperados de lógica | RuntimeException (Não Verificada) |
Conclusão
Lançar exceções personalizadas permite criar erros específicos para a aplicação, tornando o código mais claro e organizado. Escolher entre exceções verificadas (Exception
) e não verificadas (RuntimeException
) depende da necessidade de obrigar o tratamento do erro ou não.
Por que criar exceções personalizadas melhora a organização do código?
A criação de exceções personalizadas é essencial para sistemas complexos, como bancos e e-commerces, onde diferentes tipos de erros precisam ser tratados de forma específica. Definir exceções próprias melhora a manutenção do código e a experiência do usuário ao fornecer mensagens de erro mais compreensíveis.
Algumas aplicações:
- Controle de regras de negócio em aplicações financeiras
- Tratamento de erros específicos em APIs
- Melhoria na depuração e manutenção do código
- Evitar o uso de exceções genéricas no código
Dicas para quem está começando
- Use
Exception
para erros que devem ser tratados obrigatoriamente - Prefira
RuntimeException
para erros inesperados - Forneça mensagens claras nas exceções personalizadas
- Evite criar exceções desnecessárias para não complicar o código
- Registre logs das exceções para facilitar a depuração
Contribuições de Rodrigo Farias