Che cos'è un'eccezione del puntatore nullo in Java

Mohammad Irfan 12 ottobre 2023
  1. Che cos’è NullPointerException in Java?
  2. Gestire la classe NullPointerException in Java
  3. Gestire la classe NullPointerException in Java
  4. Incontri con NullPointerException negli argomenti della riga di comando in Java
Che cos'è un'eccezione del puntatore nullo in Java

Questo tutorial introduce l’eccezione del puntatore nullo Java e spiega come gestirla. Abbiamo incluso alcuni programmi di esempio da seguire.

In Java, il valore predefinito di qualsiasi variabile di riferimento è un valore nullo che punta a una posizione di memoria ma non ha alcun valore associato. Quando un programmatore tenta di eseguire qualsiasi operazione con questa variabile di riferimento, genera un’eccezione del puntatore null a causa di condizioni null.

Questo è uno scenario in cui può verificarsi questa eccezione, ma questa eccezione è la più verificata in Java, che interrompe il codice e porta a flussi di esecuzione anomali. I seguenti punti possono sollevare NullPointerException in un codice Java:

  • Chiamare il metodo di istanza di un oggetto null.
  • Modifica del campo di un oggetto nullo.
  • Trattare la lunghezza di null come se fosse un array.

Per gestire questa eccezione, Java fornisce una classe NullPointerException situata nel pacchetto java.lang. Possiamo usare questa classe nel blocco catch per specificare il tipo di eccezione e poi catturarlo per evitare la rottura del codice.

Che cos’è NullPointerException in Java?

L’esempio più semplice per comprendere la classe NullPointerException è creare un oggetto string e quindi applicare un metodo come toUpperCase() per convertire la stringa in maiuscolo. Guarda l’esempio seguente e nota che genera un’eccezione perché l’oggetto string è vuoto:

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

Produzione:

Exception in thread "main" java.lang.NullPointerException

Gestire la classe NullPointerException in Java

Per gestire le eccezioni, Java fornisce un blocco try-catch. Qui, possiamo usare questi blocchi per catturare NullPointerException ed evitare la chiusura anomala del programma. Controlla l’esempio qui sotto:

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());
    }
  }
}

Produzione:

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

Gestire la classe NullPointerException in Java

Se conosci già il riferimento null, puoi utilizzare un blocco if-else per convalidare la variabile prima di applicare qualsiasi operazione. Questo metodo è un’ottima soluzione, ma funziona solo quando si conosce il riferimento null prima. Vedi il codice qui:

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");
  }
}

Produzione:

String is null

Incontri con NullPointerException negli argomenti della riga di comando in Java

Questo è un altro scenario in cui può verificarsi un’eccezione del puntatore nullo. L’array args[] del metodo main() contiene argomenti della riga di comando e se durante il runtime non viene fornito alcun argomento, questo punta a un riferimento nullo. Ottenere la sua lunghezza restituirà NullPointerException. Vedi l’esempio qui sotto:

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

Produzione:

Exception in thread "main" java.lang.NullPointerException

Articolo correlato - Java Exception