Na prática, o tratamento de exceções é mais do que apenas conhecer a sintaxe. Escrever código robusto é mais uma arte e neste artigo serão discutidas as melhores práticas de tratamento de exceções Java. Essas práticas recomendadas de Java seguem as bibliotecas JDK padrão e vários códigos-fonte abertos para lidar com erros e exceções. É também um manual útil para programadores Java escreverem código robusto. Melhores práticas para tratamento de exceções em programação Java
Aqui está minha coleção de 10 práticas recomendadas para tratamento de exceções em programação Java. Existem elogios e críticas às exceções verificadas na programação Java. Neste artigo, tentaremos minimizar o uso de exceções verificadas e aprenderemos a usar exceções verificadas versus exceções não verificadas na programação Java.
1) Use exceções verificadas para erros recuperáveis e erros não verificados para erros de programação.
Escolher exceções marcadas ou não verificadas é sempre confuso para programadores Java. As exceções verificadas garantem que você forneça código de tratamento de exceções para condições de erro. Essa é uma forma da linguagem forçá-lo a escrever código robusto, mas também introduz muita confusão e o torna ilegível. É claro que capturar exceções e fazer algo a respeito parece razoável se você tiver uma estratégia de substituição e recuperação. Escolha entre exceções verificadas ou exceções de tempo de execução na programação Java. Para obter mais informações, consulte exceções verificadas versus exceções não verificadas.
2) Fechar ou liberar recursos no bloco final
Esta é uma prática recomendada bem conhecida em programação Java e é equivalente a um padrão ao lidar com classes de rede e IO. O fechamento de recursos no bloco final garante a liberação razoável de recursos previamente disponíveis e escassos sob condições de execução normais e anormais, o que é garantido pelo bloco final. A partir do Java 7, a linguagem possui um recurso mais interessante: automação de gerenciamento de recursos ou blocos ARM podem implementar esse recurso. No entanto, ainda precisamos lembrar de fechar os recursos no bloco final, o que é importante para liberar recursos limitados como FileDescriptors, que são usados em situações de programação de soquetes e arquivos.
3) Incluir a causa da exceção no rastreamento de pilha
Muitas vezes, as bibliotecas Java e o código-fonte aberto agrupam uma exceção em outra quando é lançada uma exceção causada por outra exceção. Registrar e imprimir exceções raiz torna-se muito importante. A classe de exceção Java fornece o método getCause() para recuperar a causa da exceção, que pode fornecer mais informações sobre a causa da exceção no nível raiz. Esta prática Java é muito útil ao depurar ou solucionar problemas. Lembre-se sempre de que se você agrupar uma exceção em outra exceção, deverá passar a exceção de origem ao construir uma nova exceção.
4) Sempre forneça informações significativas e completas sobre a exceção
As informações de exceção são o local mais importante porque é o primeiro local que o programador vê e é aqui que você pode encontrar a causa raiz do problema. Informações precisas e autênticas são sempre fornecidas aqui. Por exemplo, compare as duas mensagens de exceção da exceção IllegalArgumentException:
Mensagem 1: “Argumento incorreto para método”
Mensagem 2: “Valor ilegal para ${argument}: ${value}
A primeira mensagem informa apenas que o parâmetro é ilegal ou incorreto, mas a segunda mensagem inclui o nome do parâmetro e o valor ilegal, o que é importante para encontrar a causa do erro. Sempre siga esta prática recomendada de Java ao escrever código de tratamento de exceções na programação Java.
5) Evite o uso excessivo de exceções verificadas
As exceções verificadas têm certas vantagens na imposição da execução, mas também quebram o código e tornam-no menos legível ao mascarar a lógica de negócios. Contanto que você não abuse das exceções verificadas, você pode minimizar essas situações e o resultado é um código mais limpo. Você também pode usar novos recursos do Java 7, como um bloco catch para múltiplas exceções e gerenciamento automático de recursos para remover duplicatas.
6) Converta exceções verificadas em exceções de tempo de execução
Esta é uma das técnicas usadas para limitar o uso de exceções verificadas na maioria das estruturas como Spring. A maioria das exceções verificadas do JDBC são agrupadas em DataAccessException, e a exceção (DataAccessException) é um tipo anormal não verificado. Este é o benefício trazido pelas melhores práticas Java. Exceções específicas são restritas a módulos específicos, como SQLException, que é colocado na camada DAO, e exceções de tempo de execução com significado claro são lançadas na camada cliente.
7) Lembre-se de que exceções custam caro ao desempenho
Uma coisa a lembrar é que as exceções são caras e tornam o seu código lento. Se você tiver um método que lê um ResultSet, ele frequentemente lançará uma SQLException sem passar para o próximo elemento, que será executado muito mais lentamente do que o código normal que não lança uma exceção. Portanto, a captura e a movimentação desnecessária de exceções são minimizadas, onde não há um motivo fixo. Em vez de apenas lançar e capturar exceções, você poderá obter uma solução mais limpa e com melhor desempenho se puder usar variáveis booleanas para representar os resultados da execução. Corrija a origem do erro e evite captura desnecessária de exceções.
8) Evite que o bloco catch fique vazio
Não há nada pior do que um bloco catch vazio, porque ele não apenas esconde erros e exceções, mas também pode deixar seus objetos em um estado inutilizável ou sujo. Um bloco catch vazio só pode perder o sentido se você tiver certeza absoluta de que a exceção não continuará a afetar o estado do objeto de forma alguma, mas registrar erros durante a execução do programa ainda é a melhor opção. Esta não é apenas uma prática recomendada de Java, mas a prática mais comum para escrever código de tratamento de exceções em programação Java.
9) Use exceções padrão
Nossa nona prática recomendada recomenda o uso de exceções Java padrão e integradas. Usar exceções padrão em vez de criar as nossas próprias exceções a cada vez é a melhor escolha para manutenção e consistência, agora e no futuro. A reutilização de exceções padrão torna o código mais legível porque a maioria dos desenvolvedores Java está familiarizada com exceções padrão como RuntimeException, IllegalStateException, IllegalArgumentException ou NullPointerException que se originam do JDK e podem conhecer cada exceção rapidamente. exceções definidas no código ou na documentação.
10) Registre exceções lançadas por qualquer método
Java fornece as palavras-chave throw e throws para lançar exceções. Use @throw em javadoc para registrar quaisquer exceções que possam ser lançadas por qualquer método. Isso se torna muito importante se você escrever APIs ou interfaces públicas. Qualquer exceção lançada por um método deve ser documentada para que você possa alertar subconscientemente qualquer pessoa que o utilize. Estas são todas as práticas recomendadas que precisam ser seguidas ao lidar com exceções na programação Java. Deixe-nos saber quais são as práticas que precisam ser seguidas ao escrever código de tratamento de exceções na programação Java.