Evitar NullPointerException al validar String

miércoles, noviembre 09, 2011 , , 2 Comments

Esta vez quiero mostrarles algo muy sencillo pero también muy útil a la hora de validar cadenas usando el método equals. Veamos un ejemplo:

public class ValidarNull {
    public static void main(String[] args){
        //Declaramos una cadena con un valor nulo
        String cadenaPrueba = null;
        try{
            /*Intentanmos validar si la cadena equivale a vacio.
              Si ejecutamos nos daremos cuenta que esto 
             genera una excepciòn ya que la cadena es nula*/
            if (cadenaPrueba.equals("")) {
                System.out.println("Hola  Javeros Anònimos");
            }else{
                System.out.println("Adiós Javeros Anònimos");
            }
        }catch(NullPointerException ex){            
            System.out.println("Una fea excepción: "+ex);
        }
    }
}
Como podemos notar en el ejemplo al intentar validar la cadena se genera una excepción ya que la cadena es nula, sin embargo con tan solo cambiar de orden la validaciòn podemos ahorrarnos el error.

    //Se genera excepciòn
    if (cadenaPrueba.equals(""))    
    //Evitamos la excepciòn
    if ("".equals(cadenaPrueba))

Veamos el ejemplo:

public class ValidarNull {
    public static void main(String[] args){
        String cadenaPrueba = null;
        try{
           //Validamos la cadena nula evitando la excepciòn
            if ("".equals(cadenaPrueba)) {
                System.out.println("Hola  Javeros Anònimos");
            }else{
                System.out.println("Adiós Javeros Anònimos");
            }
        }catch(NullPointerException ex){
            System.out.println("Una fea excepción: "+ex);
        }
    }    
}

Listo! Así de fácil.

Siguenos en nuestras redes sociales.

2 comentarios:

  1. Tengo el siguiente problema:
    de primera instancia coloco el objeto del formulario en null:

    banco.setSelectedItem(null);

    Aqui selecciono el objeto para convertirlo a String:

    String banco1 = this.banco.getSelectedItem().toString();

    if ("".equals(banco)) {
    JOptionPane.showMessageDialog(null, "POR FAVOR SELECCIONE EL BANCO");
    return;
    }

    y no me lanza el mensaje de error sino: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException...que puedo hacer?

    lo probe asi tambien, poniendo la variable String de banco y tampoco:

    if ("".equals(banco1)) {
    JOptionPane.showMessageDialog(null, "POR FAVOR SELECCIONE EL BANCO");
    return;
    }

    ayuda!

    ResponderEliminar
  2. Pero en tu ejemplo no logras determinar si es nulo efectivamente el valor, solo estás evitando la caída del programa. Para saber si el objeto es nulo basta con el operador de igualdad.

    ResponderEliminar