Les cas ou java.lang.nullpointerexception est levée
On a souvent cette erreur dans nos programmes java.lang.NullPointerException. Ce bug est lancé quand vous essaierez d'utiliser un objet null qui n'a pas de valeur dans les cas suivants:- Appeler une instance de méthode null.
- Accéder ou modifier l'instance d'un objet null.
- L’exception est prévu de lever.
- Lors de l'appel de la longueur du tableau null.
- Lors de l'accès à des emplacements nul comme un tableau.
- Lors de la synchronisation d'un objet null ou de l'utiliser à l'intérieur d'un bloc synchronized.
Les objets sont référencés par des pointeurs en java
Un objet est une instance de classe ou un tableau, les références sont des pointeurs vers ces objets et une référence null se réfère à aucun objet.Quand vous déclarez une variable, Java initialise la variable x à 0 et un pointeur est créé et réfère cet objet. Par exemple, dans le code qui suit on va déclarer une variable x:
int x;Dans cet exemple, la variable x est initialisé par défaut à zéro et la deuxième ligne la valeur 5 est écrite dans l'emplacement mémoire pointé par x. Java interdit au programmeur de manipuler les cases mémoire, il vous donne accès qu'aux méthode de l'objet et pas l'emplacement mémoire.
x = 5;
Les cas ou NullPointerException est levée
1) Appeler une méthode d'une instance nullPoint point = null;
point.getX();
Exception in thread "main" java.lang.NullPointerException2) Accéder ou modifier l'instance d'un objet null.
at Test.main(Test.java:27)
Point point = null;
point.getX();
Exception in thread "main" java.lang.NullPointerException3) Lors de l'utilisation de throw null
at Test.main(Test.java:38)
throw vérifie que l'argument est non nul, et s'il est nul, elle lève NullPointerException.
IOException nullException = null;
try {
throw nullException;
} catch (IOException e) {
e.printStackTrace();
}
char[] ch = null;5) Lors de l'accès à des emplacements nul comme un tableau
int length = ch.length;
Un exemple est d'accéder aux cases d'un tableau null.
char[] ch = null;
char c = ch[0];
6) Lors de la synchronisation d'un objet null
Vous obtenez NullPointerException si vous tentez de synchroniser un objet null ou de le mettre à l'intérieur d'un bloc synchronisé.
Thread th=null;
synchronized(th){
System.out.print("ce thread est synchronisé");
}
Quelles sont les préventions
- La meilleur façon pour éviter ce type d’exception dans le cas ou vous n'avez pas créer l'objet vous-même est de vérifier si l'objet est nul. Le code doit être écrit comme ça:
void afficher(String phrase){Cette solution n'est pas optimale dans certains cas parce que l'objet est nul alors rien ne se passe dans la procédure afficher().
//vérifier si phrase n'est pas nulle
if(phrase!=null)
System.out.print(phrase);
}
String chaine = "";
//Déclaration
Thread[] th=new Thread[3];
//Initialisation
th[0]=new Thread();
th[1]=new Thread();
th[2]=new Thread();