O que é uma exceção de ponteiro nulo em Java

Mohammad Irfan 12 outubro 2023
  1. O que é NullPointerException em Java?
  2. Manipule a classe NullPointerException em Java
  3. Manipule a classe NullPointerException em Java
  4. Encontros com NullPointerException em argumentos de linha de comando em Java
O que é uma exceção de ponteiro nulo em Java

Este tutorial apresenta a exceção de ponteiro nulo Java e como você pode tratá-la. Incluímos alguns programas de amostra para você seguir.

Em Java, o valor padrão de qualquer variável de referência é um valor nulo que aponta para um local da memória, mas não tem nenhum valor associado. Quando um programador tenta realizar qualquer operação com esta variável de referência, ele lança uma exceção de ponteiro nulo devido a condições nulas.

Este é um cenário onde essa exceção pode ocorrer, mas essa exceção é a mais ocorrida em Java - o que quebra o código e leva a fluxos de execução anormais. Os seguintes pontos podem gerar NullPointerException em um código Java:

  • Chamar o método de instância de um objeto nulo.
  • Modificando um campo de objeto nulo.
  • Tratar o comprimento de nulo como se fosse um array.

Para lidar com essa exceção, Java fornece uma classe NullPointerException localizada no pacote java.lang. Podemos usar essa classe no bloco catch para especificar o tipo de exceção e, em seguida, capturá-la para evitar quebra de código.

O que é NullPointerException em Java?

O exemplo mais básico para entender a classe NullPointerException é criar um objeto string e então aplicar um método como toUpperCase() para converter a string em maiúsculas. Observe o exemplo abaixo e observe que ele lança uma exceção porque o objeto string está vazio:

public class SimpleTesting {
  static String str;
  public static void main(String[] args) {
    String newStr = str.toUpperCase();
    System.out.println(newStr);
  }
}

Resultado:

Exception in thread "main" java.lang.NullPointerException

Manipule a classe NullPointerException em Java

Para lidar com exceções, Java fornece um bloco try-catch. Aqui, podemos usar esses blocos para capturar NullPointerException e evitar o encerramento anormal do programa. Veja o exemplo abaixo:

public class SimpleTesting {
  static String str;
  public static void main(String[] args) {
    try {
      String newStr = str.toUpperCase();
      System.out.println(newStr);
    } catch (NullPointerException e) {
      System.out.println("Null Pointer: " + e.getMessage());
    }
  }
}

Resultado:

{One=1, Two=2, Three=3}

Manipule a classe NullPointerException em Java

Se você já conhece a referência nula, pode usar um bloco if-else para validar a variável antes de aplicar qualquer operação. Este método é uma solução excelente, mas só funciona quando você conhece a referência nula antes. Veja o código aqui:

public class SimpleTesting {
  static String str;
  public static void main(String[] args) {
    if (str != null) {
      String newStr = str.toUpperCase();
      System.out.println(newStr);
    } else
      System.out.println("String is null");
  }
}

Resultado:

String is null

Encontros com NullPointerException em argumentos de linha de comando em Java

Este é outro cenário em que uma exceção de ponteiro nulo pode ocorrer. O array args[] do método main() contém argumentos de linha de comando e, se durante o tempo de execução nenhum argumento for fornecido, isso aponta para uma referência nula. Obter seu comprimento retornará NullPointerException. Veja o exemplo abaixo:

public class SimpleTesting {
  static String[] arr;
  public static void main(String[] args) {
    int length = arr.length;
    System.out.println("Array length : " + length);
  }
}

Resultado:

Exception in thread "main" java.lang.NullPointerException

Artigo relacionado - Java Exception