Avez-vous remarqué java.lang.NullPointerException (NPE) ? 8 meilleures pratiques pour éviter l'exécution NPE en Java

Publié: 2020-10-07
Avez-vous remarqué java.lang.NullPointerException (NPE) ? 8 meilleures pratiques pour éviter l'exécution NPE en Java

Évitez l'exception Null Pointer en Java et les conseils et meilleures pratiques Java pour éviter l'exception NullPointerException en Java.

En tant que développeur Java, je suis sûr que vous avez dû faire face à une exception de pointeur nul (NPE) à partir du 1er jour. Dans la plupart des cas, l'exception NPE affiche une trace de pile claire qui indique la cause première de la même chose, mais dans le cas d'une grande application au niveau de l'entreprise dans laquelle vous avez des centaines de classes, il devient un cauchemar de découvrir la cause première réelle.

Qu'est-ce que l'exception de pointeur nul (NPE) ?

NullPointerException (NPE) est une exception qui se produit lorsque vous essayez d'utiliser une référence qui ne pointe vers aucun emplacement en mémoire (null) comme si elle faisait référence à un objet.

Appeler une méthode sur une référence null ou essayer d'accéder à un champ d'une référence nulle déclenchera un NPE. C'est la cause la plus fréquente.

Selon JavaDoc, voici les principales causes de NPE :

  • Lancer null comme s'il s'agissait d'une valeur Throwable .
  • Appel de la méthode d'instance d'un objet null .
  • Accéder ou modifier le champ d'un objet null .
  • Prendre la longueur de null comme s'il s'agissait d'un tableau.
  • Accéder ou modifier les emplacements de null comme s'il s'agissait d'un tableau.

Maintenant, la vraie question est de savoir comment éviter java.lang.NullPointerException lors de l'exécution ? Dans ce didacticiel, nous examinerons quelques exemples qui créent NPE au moment de l'exécution et les étapes que nous devons effectuer pour résoudre ce problème.

Créons NPE au moment de l'exécution en premier. Jetez un oeil à l'exemple ci-dessous CrunchifyNullPointerExceptionTips.java

Nous allons créer NPE de 3 manières différentes

  1. NPE sera lancé si vous essayez d'accéder à un objet nul
  2. NPE sera lancé si vous essayez de convertir une chaîne nulle
  3. NPE sera lancé si vous essayez d'accéder à un objet nul lors de l'initialisation de la classe

Créer la classe CrunchifyNullPointerExceptionTips.java

Résultat:

Eh bien, il existe quelques trucs et astuces que nous pourrions utiliser pour éviter NullPointerException lors de l'exécution. Nous allons jeter un coup d'oeil.

Astuce 1 :

Eclipse / IntelliJ IDE essaiera d'afficher NPE dans l'espace de travail. Corrigez votre code pendant le développement uniquement.

Null Pointer Hint dans Eclipse

Astuce 2 :

Ajouter crunchifyI sNullorEmpty () avant une opération sur l'objet. Ajoutez ceci à CrunchifyNullPointerExceptionTips.java

Dans le programme Java ci-dessus, les lignes 55 et 56 seront remplacées par ceci.

Astuce 3 :

Vérifiez si String est null ou vide après l'opération trim().

Astuce 4 :

Utilisez toujours le Try Catch block afin d'empêcher un processus d'exécution ininterrompu.

Astuce 5 :

Collections.emptyList() est préféré en raison d'une meilleure gestion des génériques.

Astuce 6 :

Utiliser Java Assertions

Une assertion est une déclaration qui vous permet de tester vos hypothèses sur votre code. Par exemple, si vous écrivez une méthode qui renvoie le nom dans le système, vous pouvez affirmer que le retour otherName si String est nul.

L'utilisation de base des assertions serait:

Mais il y a un hic : Assertion n'est pas disponible dans l'environnement de production et nous ne devrions pas utiliser Assertion avec une logique métier.

Astuce 7 :

Essayez d'utiliser les contrôles containsKey() , containsValue() , contains() .

Astuce 8 :

En conclusion, c'est toujours une bonne pratique de prendre soin de NPE pendant le développement plutôt que de déboguer en production au moment de l'exécution. Il existe de nombreux autres trucs et astuces disponibles en utilisant Spring Framework Annotation, Factory Pattern , Null Object Pattern etc. Mais je vais couper court maintenant.

Publiera probablement un nouveau tutoriel dans une semaine sur celui-ci. Restez à l'écoute.

Voulez-vous ajouter quelque chose à ce didacticiel OU avez-vous trouvé un problème, veuillez intervenir et fournir vos commentaires.