Exceções são um conceito fundamental na programação Java, que te ajuda a lidar com situações inesperadas em seu código. Enquanto você já aprendeu como tratar exceções, agora é hora de dar um passo adiante: lançar e definir suas próprias exceções. Neste guia, vou te mostrar como gerar exceções em seu código e criar classes de exceção personalizadas que te ajudarão a tornar seu código mais claro e robusto.
Principais descobertas
- Você pode lançar suas próprias exceções em Java para lidar melhor com situações de erro específicas.
- Definir suas próprias classes de exceção permite que você torne seu tratamento de erros mais natural e compreensível.
- Você vai aprender como lançar exceções tanto em métodos quanto a trabalhar com blocos Try-Catch.
Guia passo a passo
1. Revisão do manejo de exceções
No início, é importante lembrar como o manejo de exceções em Java funciona. Você pode se lembrar dos construtos try-catch, que permitem capturar erros e responder de acordo. No percurso anterior, você viu como tratar uma NumberFormatException quando uma conversão inválida de uma String para um número é feita.
2. Exceções em seu próprio código
Agora vamos ver como você pode lançar exceções em seu próprio código. Isso pode ser especialmente útil se você quiser definir condições de erro específicas em seus programas que não são tratadas padrão no Java.

3. Criar uma classe para validação
Vamos considerar uma classe de exemplo que chamamos de MeuValidador. Essa classe terá um método que espera um segmento de código a ser validado, neste caso um código PIN. Se o PIN inserido não corresponder a um valor específico, uma exceção será lançada.
4. Gerar e capturar erros
Dentro do método validateCode, você pode criar uma declaração if. Se o código não corresponder ao valor esperado, você lançará uma nova exceção que se parecerá com: throw new Exception("Somente 42 é a resposta para todas as perguntas.");. Aqui você usa a palavra-chave throw para gerar a exceção.
5. Ajustar a assinatura do método
Para sinalizar que esse método pode lançar uma exceção, você deve incluir a palavra-chave throws na assinatura do método. Portanto, o método agora se chama: public void validateCode(int code) throws Exception. Dessa forma, fica claro que a exceção está sendo lançada, e todos os chamadores do método são obrigados a lidar com isso.
6. Tratar exceção no bloco Try-Catch
Para capturar a exceção, você pode colocar o método em um bloco try-catch. Ao fazer isso, quando uma exceção ocorrer, o código no bloco catch será executado, onde você realiza o gerenciamento de erro específico, como a exibição de uma mensagem de erro.
7. Relançar exceções opcionalmente
Você também pode considerar relançar uma exceção capturada para passá-la a uma camada lógica superior. No entanto, você deve ter em mente que isso só faz sentido se você não estiver na função principal, pois normalmente não haverá mais código após o bloco catch aqui.
8. As vantagens de exceções próprias
A maior vantagem de classes de exceção próprias é que elas são nomeadas de forma intuitiva e específicas para o caso de uso. Em vez de trabalhar com exceções genéricas, você pode definir classes específicas como NotFoundException ou InvalidInputException. Isso não apenas ajuda na identificação de erros, mas também na depuração e manutenção do seu código.

Resumo – Lançar e definir exceções próprias em Java
Ao lançar e definir suas próprias exceções, você obtém uma ferramenta poderosa para lidar com erros de forma eficaz e tornar seu código mais legível. Você pode formular condições de exceção específicas e melhorar a separação lógica de erros, aumentando a manutenção do seu programa.
Perguntas frequentes
Qual é a diferença entre exceções verificadas e não verificadas?Exceções verificadas devem ser tratadas na assinatura do método, enquanto exceções não verificadas não precisam.
Por que eu deveria criar minhas próprias exceções?Exceções próprias ajudam com mensagens de erro específicas que visam identificar melhor problemas e tornar o código mais legível.
Como eu lanço uma exceção em um método?Você usa a palavra-chave throw, seguida por uma nova instância da exceção.
Eu preciso indicar na declaração do método que estou lançando uma exceção?Sim, para isso você usa a palavra-chave throws na assinatura do método.
O que acontece se eu não tratar uma exceção?O programa normalmente terminará com uma exceção de execução, a menos que a exceção seja inválida e não tratada.