Você notou java.lang.NullPointerException (NPE)? 8 práticas recomendadas para evitar o NPE em tempo de execução em Java

Publicados: 2020-10-07
Você notou java.lang.NullPointerException (NPE)? 8 práticas recomendadas para evitar o NPE em tempo de execução em Java

Evite Null Pointer Exception em Java e Java Dicas e práticas recomendadas para evitar NullPointerException em Java.

Como desenvolvedor Java, tenho certeza que você deve ter enfrentado Null Pointer Exception (NPE) a partir do primeiro dia. Na maioria dos casos, a exceção NPE mostra um rastreamento de pilha claro que aponta a causa raiz do mesmo, mas no caso de um aplicativo de nível corporativo grande no qual você tem centenas de classes, torna-se um pesadelo descobrir a causa raiz real.

O que é a exceção de ponteiro nulo (NPE)?

NullPointerException (NPE) é uma exceção que ocorre quando você tenta usar uma referência que aponta para nenhum local na memória (null) como se estivesse referenciando um objeto.

Chamar um método em uma referência null ou tentar acessar um campo de uma referência nula acionará um NPE. Esta é a causa mais comum.

De acordo com o JavaDoc, abaixo estão as principais causas para o NPE:

  • Lançando null como se fosse um valor Throwable .
  • Chamando o método de instância de um objeto null .
  • Acessando ou modificando o campo de um objeto null .
  • Tomando o comprimento de null como se fosse uma matriz.
  • Acessando ou modificando os slots de null como se fosse um array.

Agora a questão real é como evitar java.lang.NullPointerException em tempo de execução? Neste tutorial, veremos alguns exemplos que criam NPE em tempo de execução e as etapas que precisamos executar para resolver isso.

Vamos criar o NPE em tempo de execução 1º. Dê uma olhada no exemplo abaixo CrunchifyNullPointerExceptionTips.java

Vamos criar NPE de 3 maneiras diferentes

  1. O NPE será lançado se você estiver tentando acessar o objeto nulo
  2. O NPE será lançado se você estiver tentando converter String nula
  3. O NPE será lançado se você estiver tentando acessar o objeto nulo durante a inicialização da classe

Criar classe CrunchifyNullPointerExceptionTips.java

Resultado:

Bem, existem algumas dicas e truques que podemos usar para evitar NullPointerException em tempo de execução. Vamos dar uma olhada.

Dica 1:

O Eclipse / IntelliJ IDE tentará mostrar o NPE no espaço de trabalho. Corrija seu código apenas durante o desenvolvimento.

Dica de ponteiro nulo no Eclipse

Dica 2:

Adicione crunchifyI sNullorEmpty () antes de uma operação no objeto. Adicione isso a CrunchifyNullPointerExceptionTips.java

No programa java acima, as linhas 55 e 56 serão substituídas por isso.

Dica 3:

Verifique se String é null ou vazio após a operação trim().

Dica 4:

Sempre use Try Catch block para evitar o processo de tempo de execução ininterrupto.

Dica 5:

Collections.emptyList() é preferido devido ao melhor manuseio de genéricos.

Dica 6:

Usar Java Assertions

Uma asserção é uma declaração que permite testar suas suposições sobre seu código. Por exemplo, se você escrever um método que retorne o nome no sistema, poderá declarar que o otherName retornando se String for nulo.

O uso básico de asserções seria:

Mas há um problema: Assertion não está disponível no ambiente de produção e não devemos usar Assertion com nenhuma lógica de negócios.

Dica 7:

Tente usar as verificações containsKey() , containsValue() , contains() .

Dica 8:

Como conclusão, é sempre uma boa prática cuidar do NPE durante o desenvolvimento, em vez de depurar na produção em tempo de execução. Existem várias outras dicas e truques disponíveis usando Spring Framework Annotation, Factory Pattern , Null Object Pattern etc. Mas vou resumir isso agora.

Vai publicar novo tutorial provavelmente em uma semana sobre este. Fique ligado.

Você deseja adicionar algo a este tutorial OU encontrou um problema, entre em contato e forneça seus comentários.