Mais
×

Como reparar em Java: "Lang Null Pointer Exception"

Atualizado em 17 abril, 2017

Uma exceção Null Pointer (ponteiro nulo), também conhecida como java.lang.NullPointerException, acontece quando um aplicativo tenta acessar uma referência que não foi inicializada. Em Java, os tipos não-primitivos, como o String ou o Integer, contêm um ponteiro a um valor e não o valor em si. Se um ponteiro não é inicializado, não apontará a nada e será, portanto, nulo. É comum tentar referenciar um ponteiro nulo passando-o como argumento de um método. A forma mais fácil de gerenciar a exceção é indicar ao método o que fazer se é recebido um ponteiro deste tipo.

Instruções

Aprenda a gerenciar uma exceção de ponteiro nulo em Java (Comstock/Comstock/Getty Images)

    Criando uma classe simples para produzir a NullPointerException

  1. Crie uma nova classe no seu aplicativo como a mostrada abaixo. Essa classe produzirá uma exceção de ponteiro nulo.

    public class testePonteiroNulo {

    public static void main(String[] args) { tarefa(null); }

    public static void tarefa(Integer x){ int y = 1 + x; } }

  2. Execute a classe. A seguinte mensagem aparecerá no console:

    Exception in thread "main" java.lang.NullPointerException at NullPoint.tarefa(NullPoint.java:10) at NullPoint.main(NullPoint.java:6)

  3. Note que o problema acontece porque você está passando um "null" e o seu método "tarefa" espera um ponteiro a um número inteiro.

    Imprimir uma mensagem de erro para depuração

  1. Adicione o seguinte código antes do começo do método "tarefa". Isso lhe permitirá fazer a depuração, pois mostrará onde está sendo recebido o valor nulo.

    if(x == null){ System.out.println("task() recebeu um valor nulo para x"); }

  2. Verifique se seu código ficou como mostrado abaixo:

    public class testePonteiroNulo {

    public static void main(String[] args) { tarefa(null); }

    public static void tarefa(Integer x){

    if(x == null){

    System.out.println("task() recebeu um valor nulo para x");

    } int y = 1 + x; } }

  3. Execute a classe. Você verá a mensagem "task() recebeu um valor nulo para x" em vez da exceção.

    Gerenciando a exceção

  1. Coloque um valor padrão quando um valor nulo for passado, adicionando o seguinte código ao começo do método "tarefa".

    if(x == null){ x = 1; }

  2. Verifique se seu código ficou como mostrado abaixo:

    public class testePonteiroNulo {

    public static void main(String[] args) { tarefa(null); }

    public static void tarefa(Integer x){

    if(x == null){

    x = 1;

    } int y = 1 + x; } }

  3. Execute a classe. Você não verá mais a NullPointerException porque x agora aponta ao valor 1.

bibliography-icon icon for annotation tool Cite this Article