Foros del Web » Programación para mayores de 30 ;) » Java »

Controlar excepcion nullpointerexception

Estas en el tema de Controlar excepcion nullpointerexception en el foro de Java en Foros del Web. Buenas noches. Tengo el sgte codigo que utilizo para el login pero me arroja un error cuando el usuario no existe y se va por ...
  #1 (permalink)  
Antiguo 03/02/2015, 20:53
 
Fecha de Ingreso: enero-2015
Ubicación: Guayaquil
Mensajes: 17
Antigüedad: 9 años, 3 meses
Puntos: 0
Información Controlar excepcion nullpointerexception

Buenas noches.

Tengo el sgte codigo que utilizo para el login pero me arroja un error cuando el usuario no existe y se va por el nullpointerexcepction aunque no causa que el programa se detenga desearia saber como puedo controlar esta excepcion de alguna mejor manera, aqui dejo el codigo.

Código:
public ResultSet cargaAcceso(String user, String pass) {
        try {
            cn = conectaMYSQL.getIntance().getConnection();
            ps = cn.prepareStatement("SELECT * FROM usuario WHERE (usu_usuario = '" + user + "' AND usu_contrasena = '" + pass + "')");
            rs = ps.executeQuery();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
            Logger.getLogger(AccesoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return rs;
    }
    
    UsuarioTO a ;
    public UsuarioTO logear(String user, String pass) {                
        sql = "SELECT * FROM usuario WHERE (usu_usuario = '" + user + "' AND usu_contrasena = '" + pass + "')";
        Object[] filaObt = operacionDAO.getFila(sql);
        try {
            if (filaObt != null) {
                a = new UsuarioTO();
                a.setId(Integer.parseInt(filaObt[0].toString()));
                a.setCodigo(filaObt[1].toString());
                a.setNombre(filaObt[2].toString());
                a.setUsuario(filaObt[3].toString());
                a.setContrasena(filaObt[4].toString());
                a.setIp(filaObt[5].toString());
                a.setPerfil(filaObt[6].toString());
                System.out.println("Usuario Correcto");                                
            } else {
                JOptionPane.showMessageDialog(null, "No existe el Usuario Asociado");                                
                AccesoGUI.txtUsuario.setText("");                
                AccesoGUI.txtContraseña.setText("");
                AccesoGUI.txtContraseña.setEnabled(false); 
                AccesoGUI.txtUsuario.requestFocus();
            }
        } catch (NullPointerException ex) {
            JOptionPane.showMessageDialog(null,ex.getMessage());
            Logger.getLogger(AccesoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return a;
    }

    public String perfil(String user, String pass) {
        
        sql = "SELECT usu_perfil FROM usuario WHERE (usu_usuario = '" + user + "' AND usu_contrasena = '" + pass + "')";
        rs = cargaAcceso(user ,pass);
        try {
            while (rs.next()) {
                String add = rs.getString(7);
                resul = add;
                //JOptionPane.showMessageDialog(null,"Usted es : " +resul);                    
            }
        } catch (SQLException | NullPointerException ex) {
            JOptionPane.showMessageDialog(null,ex.getMessage());
            Logger.getLogger(AccesoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return resul;
    }

    String resul,perfi;
    
    public boolean acceder(String usuario, String clave, JTextField t1, JTextField t2) {
        flag = false;
        usuario = t1.getText();
        clave = t2.getText();
        usuarioTO = logear(usuario, clave);        
        try {            
            perfi = perfil(usuario, clave);            
            switch (perfi) {
                case "Administrador":
                    if (usuarioTO.getIp().equals(ipdao.getIP())) {
                        JOptionPane.showMessageDialog(null, "ad", "Cuadro de Advertencia", JOptionPane.QUESTION_MESSAGE);
                        JOptionPane.showMessageDialog(null, "Bienvenido al Sistema", "Cuadro de Advertencia", JOptionPane.QUESTION_MESSAGE);
                        flag = true;
                        gui.setVisible(true);
                        AccesoGUI.estado = 1;
                        MenuAdministradorGUI.lblMensaje.setText(usuario);
                    } else {
                        JOptionPane.showMessageDialog(null, "Datos Erroneos Adm", "Cuadro de Advertencia", JOptionPane.ERROR_MESSAGE);
                        AccesoGUI.lblMensaje.setText("Su Dirección IP no esta Autorizada para el Acceso");
                        t2.setText("");
                        t1.setText("");
                        t1.requestFocus();
                    }   break;
                case "Usuario":
                    if (usuarioTO.getIp().equals(ipdao.getIP())) {
                        JOptionPane.showMessageDialog(null, "user", "Cuadro de Advertencia", JOptionPane.QUESTION_MESSAGE);
                        JOptionPane.showMessageDialog(null, "Bienvenido al Sistema", "Cuadro de Advertencia", JOptionPane.QUESTION_MESSAGE);
                        flag = true;
                        guiu.setVisible(true);
                        AccesoGUI.estado = 2;
                        MenuUsuarioGUI.lblMensaje.setText(usuario);
                    } else {
                        JOptionPane.showMessageDialog(null, "Datos Erroneos User", "Cuadro de Advertencia", JOptionPane.ERROR_MESSAGE);
                        AccesoGUI.lblMensaje.setText("Su Dirección IP no esta Autorizada para el Acceso");
                        t2.setText("");
                        t1.setText("");
                        t1.requestFocus();
                }   break;
            }            
        } catch (NullPointerException ex) {
            JOptionPane.showMessageDialog(null,"Error"+ex.getMessage());
            Logger.getLogger(AccesoDAO.class.getName()).log(Level.SEVERE, null, ex);
            flag = false;
        }
        return flag;
    }
Saludos.
  #2 (permalink)  
Antiguo 04/02/2015, 01:50
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Controlar excepcion nullpointerexception

Buenas,

Una exception unchecked como un nullpointer no deberias capturarlas nunca, sino que deberias capturarla.
Quita el try-catch y deja que salga la excepcion por consola. En la pila te dira cual es la linea que produce el nullpointer.
Probablemente sera:
if (usuarioTO.getIp().equals(ipdao.getIP())) {

Y se producira porque o bien usuarioTO o updao son nulos en ese punto del codigo.

Si depuras el codigo con tu ide solucionaras el problema rapidamente.
http://www.vogella.com/tutorials/Ecl...g/article.html
https://netbeans.org/features/java/debugger.html

Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: netbeans
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:04.