java.lang.NullPointerException est l’une des exceptions les plus populaires en Java. Toute personne travaillant en Java a dû voir cela surgir de nulle part dans le programme autonome Java ainsi que dans l’ application web Java.
java.lang.NullPointerException
NullPointerException est une exception d’exécution, donc nous n’avons pas besoin de la capturer dans le programme. NullPointerException est levée dans une application lorsque nous essayons d’effectuer une opération sur null où un objet est requis. Certaines des raisons courantes de NullPointerException dans les programmes Java sont:
- Appeler une méthode sur une instance d’objet mais à l’exécution l’objet est null.
- Accéder à des variables d’une instance d’objet qui est null à l’exécution.
- Lancer null dans le programme
- Accéder à un index ou modifier la valeur d’un index d’un tableau qui est null
- Vérifier la longueur d’un tableau qui est null à l’exécution.
Exemples de NullPointerException en Java
Regardons quelques exemples de NullPointerException dans les programmes Java.
1. NullPointerException lors de l’appel d’une méthode d’instance
Lorsque nous exécutons le programme ci-dessus, il génère le message d’erreur NullPointerException suivant.
Nous obtenons une NullPointerException dans l’instruction t.foo("Hi");
car « t » est nul ici.
2. Java NullPointerException lors de l’accès/modification d’un champ d’un objet null
Le programme ci-dessus génère la trace de pile suivante pour NullPointerException.
NullPointerException est déclenchée dans l’instruction int i = t.x;
car « t » est nul ici.
3. Java NullPointerException lorsqu’un null est passé en argument de méthode
Voici l’un des cas les plus courants de la java.lang.NullPointerException
car c’est l’appelant qui passe l’argument nul.
L’image ci-dessous montre l’exception de pointeur nul lorsque le programme ci-dessus est exécuté dans Eclipse IDE.
4. java.lang.NullPointerException lorsqu’un nul est lancé
Ci-dessous se trouve la trace de la pile d’exceptions du programme ci-dessus, montrant une NullPointerException en raison de l’instruction throw null;
.
5. NullPointerException lors de la récupération de la longueur d’un tableau nul
6. NullPointerException lors de l’accès à la valeur d’indice d’un tableau nul
7. NullPointerException lors de la synchronisation sur un objet null
Le synchronized(mutex)
va générer une NullPointerException car l’objet « mutex » est null.
8. HTTP Status 500 java.lang.NullPointerException
Parfois, nous recevons une réponse de page d’erreur d’une application web Java avec un message d’erreur tel que « HTTP Status 500 – Internal Server Error » et la cause principale est java.lang.NullPointerException
.
Pour cela, j’ai modifié le projet Exemple Spring MVC et changé la méthode HomeController comme suit.
L’image ci-dessous montre le message d’erreur généré par la réponse de l’application web.
Voici la trace de la pile d’exceptions:
La cause principale est une NullPointerException dans l’instruction user.getUserId().toLowerCase()
car user.getUserId()
renvoie null.
Comment détecter java.lang.NullPointerException
Détecter NullPointerException est très facile, il suffit de regarder la trace de l’exception et elle vous montrera le nom de la classe et le numéro de ligne de l’exception. Ensuite, regardez le code et voyez ce qui pourrait être nul causant le NullPointerException. Il suffit de regarder tous les exemples ci-dessus, il est très clair à partir de la trace de la pile ce qui cause une exception de pointeur nul.
Comment réparer NullPointerException
java.lang.NullPointerException est une exception non contrôlée, donc nous n’avons pas besoin de l’attraper. Les exceptions de pointeur nul peuvent être évitées en utilisant des vérifications de null et des techniques de codage préventives. Regardez ci-dessous des exemples de code montrant comment éviter java.lang.NullPointerException.
Pratiques de codage recommandées pour éviter NullPointerException
1. Considérons la fonction ci-dessous et recherchons les scénarios provoquant une exception de pointeur nul.
La NullPointerException peut survenir si l’argument est passé comme null. La même méthode peut être écrite comme suit pour éviter la NullPointerException.
2. Nous pouvons également ajouter une vérification de null pour l’argument et déclencher une IllegalArgumentException
si nécessaire.
3. Nous pouvons utiliser l’opérateur ternaire comme illustré dans l’exemple de code ci-dessous.
4. Utilisez String.valueOf()
plutôt que la méthode toString()
. Par exemple, vérifiez le code de la méthode PrintStream println() défini comme suit.
Le fragment de code ci-dessous montre l’exemple où la méthode valueOf() est utilisée au lieu de toString().
5. Écrivez des méthodes renvoyant des objets vides plutôt que null lorsque c’est possible, par exemple, une liste vide, une chaîne vide, etc.
6. Il existe des méthodes définies dans les classes de collection pour éviter la NullPointerException, vous devriez les utiliser. Par exemple, contains(), containsKey(), et containsValue().
Référence: Document d’API
Source:
https://www.digitalocean.com/community/tutorials/java-lang-nullpointerexception