January 1
Una eccezione Null Pointer, o java.lang.NullPointerException, si verifica quando un'applicazione tenta di accedere a un tipo di riferimento che non è stato inizializzato. In Java, i tipi nonprimitive come String o Integer in possesso di un puntatore ad un valore, non il valore stesso. Se si tenta di fare riferimento a un tipo di riferimento e non è stato inizializzato, il puntatore non punta a nulla, ed è quindi nullo. Questo si verifica comunemente quando un tipo di riferimento viene passato come argomento a un metodo. Il modo più semplice per gestire l'eccezione è quello di raccontare il metodo che cosa fare se si riceve un puntatore nullo.
1 Creare una nuova classe nell'applicazione come segue. Questa classe è progettato per produrre un'eccezione di puntatore nullo.
public class NullPointTest {
Main (string [] args) {public static void
task(null);
}
compito pubblico static void (Integer x) {
int y = 1 + x;
}
}
2 Eseguire la classe. Quanto segue stampa alla console:
Eccezione in filetto java.lang.NullPointerException "principale"
a NullPoint.task (NullPoint.java:10)
a NullPoint.main (NullPoint.java:6)
3 Si noti il problema si verifica perché si sta passando nulla e il metodo di "compito" si aspetta un puntatore ad un intero.
4 Aggiungere il seguente codice prima dell'inizio del metodo "task". Questo vi permetterà di eseguire il debug, mostrando dove viene ricevuto il valore nullo.
if (x == null) {
System.out.println ( "compito () ha ricevuto un valore nullo per x");
}
5 Verificare che il codice sia simile al seguente:
public class NullPointTest {
Main (string [] args) {public static void
task(null);
}
compito pubblico static void (Integer x) {
if (x == null) {
System.out.println ( "compito () ha ricevuto un valore nullo per x");
}
int y = 1 + x;
}
}
6 Eseguire la classe. Quanto segue dovrebbe stampare sullo schermo al posto di eccezione: ". Compito () ha ricevuto un valore nullo per x"
7 Assegnare un valore predefinito quando un valore nullo viene passato aggiungendo la seguente all'inizio del metodo "task".
if (x == null) {
x = 1;
}
8 Verificare che il codice sia simile al seguente:
public class NullPointTest {
Main (string [] args) {public static void
task(null);
}
compito pubblico static void (Integer x) {
if (x == null) {
x = 1;
}
int y = 1 + x;
}
}
9 Eseguire la classe. Si dovrebbe più vedere la NullPointerException perché x ora punta a 1.