Un'eccezione di puntatore Null, o java.lang.NullPointerException, si verifica quando un'applicazione tenta di accedere a un tipo di riferimento che non è stato inizializzato. In Java, non primitivo tipi ad esempio String o Integer contenere un puntatore a un valore, non il valore stesso. Se si tenta di fare riferimento a un tipo di riferimento e non è stato inizializzato, il puntatore non sta puntando a qualcosa e pertanto è null. Questa eventualità si verifica quando un tipo di riferimento viene passato come argomento a un metodo. Il modo più semplice per gestire l'eccezione è raccontare il metodo cosa fare se riceve un puntatore null.
Istruzioni
Creazione di una semplice classe per produrre la NullPointerException
1
Creare una nuova classe nell'applicazione come segue. Questa classe è progettata per produrre un'eccezione di puntatore nullo.
public class NullPointTest {
Public Shared Sub main (String [] args) {
task(null);
}
Public Shared Sub task(Integer x) () {
int y = 1 + x;
}
}
2
Eseguire la classe. Di seguito verrà stampato nella console:
Exception in thread "main" java.lang.NullPointerException
presso NullPoint.task(NullPoint.java:10)
presso NullPoint.main(NullPoint.java:6)
3
Si noti il problema si verifica perché si sta passando null e il metodo di "attività" è previsto un puntatore a un valore integer.
Un errore di stampa per il debug
4
Aggiungere il seguente codice prima dell'inizio del metodo "attività". Questo vi permetterà di eseguire il debug che vi mostra dove viene ricevuto il valore null.
if(x == null) () {
System.out.println("Task() ha ricevuto un valore null per x");
}
5
Verificare che il codice simile al seguente:
public class NullPointTest {
Public Shared Sub main (String [] args) {
task(null);
}
Public Shared Sub task(Integer x) () {
if(x == null) () {
System.out.println("Task() ha ricevuto un valore null per x");
}
int y = 1 + x;
}
}
6
Eseguire la classe. Quanto segue dovrebbe stampare sullo schermo al posto di eccezione: "task ha ricevuto un valore null per x".
Gestione dell'eccezione
7
Assegnare un valore predefinito quando viene passato un valore null aggiungendo quanto segue all'inizio del metodo "attività".
if(x == null) () {
x = 1;
}
8
Verificare che il codice simile al seguente:
public class NullPointTest {
Public Shared Sub main (String [] args) {
task(null);
}
Public Shared Sub task(Integer x) () {
if(x == null) () {
x = 1;
}
int y = 1 + x;
}
}
9
Eseguire la classe. Non si dovrebbe vedere il NullPointerException, perché x ora punta a 1.