¿Ha notado java.lang.NullPointerException (NPE)? 8 mejores prácticas para evitar NPE en tiempo de ejecución en Java

Publicado: 2020-10-07
¿Ha notado java.lang.NullPointerException (NPE)? 8 mejores prácticas para evitar NPE en tiempo de ejecución en Java

Evite la excepción de puntero nulo en Java y las sugerencias y mejores prácticas de Java para evitar la excepción NullPointerException en Java.

Como desarrollador de Java, estoy seguro de que debe haberse enfrentado a la excepción de puntero nulo (NPE) a partir del primer día. En la mayoría de los casos, la excepción NPE muestra un seguimiento claro de la pila que señala la causa raíz de la misma, pero en el caso de una aplicación de nivel empresarial grande en la que tiene cientos de clases, se convierte en una pesadilla descubrir la causa raíz real.

¿Qué es la excepción de puntero nulo (NPE)?

NullPointerException (NPE) es una excepción que ocurre cuando intenta usar una referencia que no apunta a ninguna ubicación en la memoria (nula) como si estuviera haciendo referencia a un objeto.

Llamar a un método en una referencia null o intentar acceder a un campo de una referencia nula activará una NPE. Esta es la causa más común.

Según JavaDoc, a continuación se encuentran las principales causas de NPE:

  • Lanzar null como si fuera un valor Throwable .
  • Llamar al método de instancia de un objeto null .
  • Acceder o modificar el campo de un objeto null .
  • Tomando la longitud de null como si fuera una matriz.
  • Accediendo o modificando los slots de null como si fuera un array.

Ahora la pregunta real es ¿Cómo evitar java.lang.NullPointerException en tiempo de ejecución? En este tutorial, veremos algunos ejemplos que crean NPE en tiempo de ejecución y los pasos que debemos realizar para resolver esto.

Vamos a crear NPE en tiempo de ejecución primero. Eche un vistazo al siguiente ejemplo CrunchifyNullPointerExceptionTips.java

Crearemos NPE de 3 maneras diferentes

  1. Se lanzará NPE si está intentando acceder a un objeto nulo
  2. Se lanzará NPE si está intentando convertir una cadena nula
  3. Se lanzará NPE si está intentando acceder a un objeto nulo durante la inicialización de la clase

Crear clase CrunchifyNullPointerExceptionTips.java

Resultado:

Bueno, hay algunos consejos y trucos que podríamos usar para evitar NullPointerException en tiempo de ejecución. Vamos a ver.

Pista 1:

Eclipse/IntelliJ IDE intentará mostrar NPE en el espacio de trabajo. Corrige tu código solo durante el desarrollo.

Sugerencia de puntero nulo en Eclipse

Pista 2:

Agregue crunchifyI sNullorEmpty () antes de una operación en el objeto. Agregue esto a CrunchifyNullPointerExceptionTips.java

En el programa Java anterior, las líneas 55 y 56 se reemplazarán con esto.

Pista 3:

Compruebe si String es null o está vacío después de la operación trim().

Pista 4:

Utilice siempre Try Catch block para evitar un proceso de tiempo de ejecución ininterrumpido.

Pista 5:

Se prefiere Collections.emptyList() debido a un mejor manejo de los genéricos.

Pista 6:

Usar Java Assertions

Una aserción es una declaración que le permite probar sus suposiciones sobre su código. Por ejemplo, si escribe un método que devuelve el nombre en el sistema, puede afirmar que el otro Nombre devuelto si la Cadena es nulo.

El uso básico de las afirmaciones sería:

Pero hay una trampa: la aserción no está disponible en el entorno de producción y no deberíamos usar la aserción con ninguna lógica comercial.

Pista 7:

Intente usar las comprobaciones de containsKey() , containsValue() , contains() .

Pista 8:

Como conclusión, siempre es una buena práctica ocuparse de NPE durante el desarrollo en lugar de depurar en producción en tiempo de ejecución. Hay una serie de otros consejos y trucos disponibles usando Spring Framework Annotation, Factory Pattern , Null Object Pattern, etc. Pero lo acortaré ahora.

Publicaré un nuevo tutorial probablemente en una semana sobre este. Manténganse al tanto.

¿Desea agregar algo a este tutorial O si encontró un problema? Por favor, participe y proporcione sus comentarios.