Resolución de excepción de puntero nulo en Java

  Excepción de puntero nulo de Java

Aunque Java es uno de los lenguajes de programación más solicitados y utilizados en el mundo, no deja de tener detractores. Java no es un lenguaje particularmente amigable para principiantes y está lleno de reglas y estructuras rígidas que pueden ser difíciles de entender. Luego está la NullPointerException.

La excepción de puntero nulo es una "excepción" (error) que es especialmente común cuando se programa en Java. Para un principiante, este es un mensaje confuso y abrumador de recibir, pero puede ser igualmente molesto para los profesionales. De hecho, las excepciones de puntero nulo son tan comunes y tan dañinas que se las conoce como el "error de mil millones de dólares". ¡Ay!

En esta publicación, descartaremos la oración para averiguar exactamente qué significa y qué debe hacer cuando encuentre una excepción de puntero nulo en su código.

¿Qué significa la excepción de puntero nulo?

En primer lugar, debemos comprender exactamente qué se entiende por puntero y cómo puede ser nulo.

Para hacer esto, es útil recordar que una variable es en realidad un "puntero" que le dice a la computadora que mire en una determinada posición. Esa posición entonces contendrá un valor, que es el valor de la variable dada.

Entonces, si decimos "int x = 3", la computadora elegirá una ubicación para llamar "x" y almacenará el valor "3" allí. Siempre que se refiera a x más adelante en su código, la computadora buscará en esa posición y verá que es un "3" (a menos que lo haya cambiado). La variable apunta la computadora al destino correcto.

Ver también: Comprender las variables en Java

Por eso es útil conocer primero el tamaño potencial de una variable, ya que la computadora indica cuánto espacio asignar para ese valor.

Pero, ¿qué sucede cuando tiene un puntero que apunta a ninguna parte? Aquí es donde entra la excepción del puntero nulo.

Objetos y referencias

Un número entero como "x" es lo que llamamos "tipo primitivo". Esto significa que es un valor fundamental.

Un objeto, por otro lado, es una estructura de datos más compleja que puede tener múltiples valores y métodos. Sin embargo, al igual que los tipos primitivos, aún deben almacenarse en algún lugar y aún necesitan una dirección y un puntero.

Un ejemplo es String. Este no es un tipo primitivo en Java, sino un tipo de referencia: en este caso, "apunta" a una clase que puede tener múltiples valores y métodos. Después de inicializar una instancia de una cadena, puede hacer cosas como:

  myString.length (); 

Esto le dirá cuánto tiempo dicha cadena está usando el método que pertenece a esa clase. Pero esto es también lo que hace posible la excepción de puntero nulo porque "length ()" es un valor que se refiere a una instancia específica de un objeto. Esto significa que actúa sobre una cadena específica una vez que se ha creado .

Entonces, debe decir:

  String myString = "Hola";
myString.length (); 

Pero si tuviera que decir:

  String myString = null;
myString.length (); 

Habría creado un puntero ( myString ) pero ese puntero no apunta a ninguna parte, no sabe dónde buscar. ¿Otra forma de decirlo? El puntero es nulo .

La clave para entender es que no es que no haya valor, sino que la variable no apunta a ninguna parte para que haya un valor.

Hay algunos modelos de diseño de código que aprovechan la capacidad de asignar valores nulos, por lo que es una característica útil en esas circunstancias. ¡Siempre que recuerde que el objeto es nulo!

Cómo evitar las excepciones de puntero nulo de Java

La ​​razón por la que las excepciones de puntero nulo son tan impopulares en Java es que son excepciones en tiempo de ejecución. Esto significa que la aplicación se compilará correctamente y solo se enterará cuando llegue a ese punto del código. Por lo tanto, es posible que un puntero nulo se deslice por la red si está inicializando muchos objetos sobre la marcha.

Por eso es útil incluir medidas para evitar excepciones de puntero nulo en tiempo de ejecución.

¿La forma más sencilla de hacerlo?


  if (myString == null) {
 regreso;
} 

Esto le ayudará a comprobar rápidamente si un objeto es nulo, evitando así el código que generaría una excepción. También hay otros trucos que puedes usar. Por ejemplo, al comparar cadenas, es una buena decisión invocar el método desde el literal de cadena, en lugar de al revés:

  If ("Hello!". Equals (myString)) {

En lugar de: [19659017] If (myString.equals ("Hello!")) {

Evitará lanzar una excepción de esta manera. O simplemente podría usar Kotlin, que es "seguro para nulos" por diseño.

Vea también: Tutorial de Android de Kotlin para principiantes: Cree un cuestionario simple

¿Quiere aprender más sobre cómo escribir código Java impecable y bien diseñado? Luego, consulte nuestra guía de los mejores recursos para aprender Java. ¿O por qué no empezar con nuestro completo y gratuito tutorial de Java para principiantes?

About MiReal

Compruebe también

El Arsenal de Android: Preferencias

💻 Instalación Agréguelo al archivo de la aplicación build.gradle : implementación & # 39; com.github.imangazalievm.material …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *