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

Problema raro con List

Estas en el tema de Problema raro con List en el foro de Java en Foros del Web. Hola. Me he encontrado con problema un poco extraño trabajando con listas, creo una lista y al crearla hago todas las validaciones para que ningun ...
  #1 (permalink)  
Antiguo 10/04/2015, 14:54
Avatar de Andreslrz  
Fecha de Ingreso: septiembre-2008
Mensajes: 99
Antigüedad: 15 años, 7 meses
Puntos: 2
Pregunta Problema raro con List

Hola.

Me he encontrado con problema un poco extraño trabajando con listas, creo una lista y al crearla hago todas las validaciones para que ningun dato sea nulo, la recorro y verifico que los filtros hallan funcionado y cuando hago el llamado desde el programa me muestra una cantidad de null pointer exception, volvi y verifique y empece a depurar paso a paso y no mostraba el error asi que volvi a ejecutar el programa y nuevamente lanza la excepcion.

Para verificar que podia ser el error encerre el for en un try catch y graciosamente el error desaparecio, sin lanzar la excepcion.

¿Alguien sabe a que se deba esto? la verdad he trabajado con java y he visto cuanto error raro se pueda imaginar.
  #2 (permalink)  
Antiguo 10/04/2015, 16:28
 
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: Problema raro con List

Hola...

Serías tan amable de publicar el código con ayuda del Highlight, de esa manera podremos comprender el código de mejor forma y ayudarte con tu problema.
  #3 (permalink)  
Antiguo 10/04/2015, 21:51
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años
Puntos: 74
Respuesta: Problema raro con List

no nos cuentes historias, muestra el código
  #4 (permalink)  
Antiguo 11/04/2015, 04:34
Avatar de Andreslrz  
Fecha de Ingreso: septiembre-2008
Mensajes: 99
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema raro con List

De la BD
Código Java:
Ver original
  1. public List<Factura> cargarFacturas(String estado) {
  2. List<Factura> facturas = new ArrayList<>();
  3. try {
  4.     Class.forName(properties.getProperty("driver"));
  5.     connection=DriverManager.getConnection(properties.getProperty("url"),
  6. properties.getProperty("usuario"), properties.getProperty("contrasena"));
  7.     connection.setAutoCommit(false);
  8.     PreparedStatement statement = connection.prepareStatement("select * from factura where estado = ?").
  9.     statement.setString(1, estado);
  10.     ResultSet rs = connect.execute(statement);
  11.     while(rs.next()) {
  12.         Factura factura = new Factura(rs.getString("numero"), rs.getString("fecha"), rs.getString("hora"), rs.getString("estado"), rs.getString("cliente"), rs.getString("domicilio"));
  13.         facturas.add(factura);
  14.     }
  15. }catch(SQLExcpetio ex) {
  16.  //excepcion aqui
  17. }
  18. return facturas;
  19. }

Código Java:
Ver original
  1. public List<Factura> buscarFactura(String estado) {
  2.     List<Factura> encontradas = new ArrayList<>();
  3.     //facturas es un arraylist de la clase
  4.     if(facturas.isEmpty())
  5.         facturas = consultas.cargarFacturas(estado);
  6.         encontradas = facturas;
  7.     else {
  8.         for(factura ft: facturas) {
  9.                //Sin el try catch con NullPointerException salta una excepcion por puntero nulo
  10. //Por lo que verifique la lista al cargar datos de la bd
  11.               if(ft.getEstado().equals(estad)) {
  12.                    encontradas.add(ft);
  13.               }
  14.          }
  15.          if(encontradas.isEmpty()) {
  16.             encontradas  = consultas.cargarFacturas(estado);
  17.             facturas.addAll(encontradas);
  18.          }
  19.     }
  20.     return encontradas;
  21. }

Es solo el recorrido del arraylist el que da el problema asi como lo puse aqui salta NullPointerException todas las veces que hace la comparacion en el recorrido de la lista, pero igual saca los datos.

cuando lo encierro en un try catch no entra a la excepcion, solo desaparece el error por arte de magia. En la carga de la bd verifique todas las facturas que se creaban comprarando si era nulo o no y verificando que los datos estubieran, y todo estaba bien.

Tambien ejecute el debugger e hice el seguimiento paso a paso (ya me duelen los dedos de presionar el f7 y f8) y con el debugguer tampoco muestra el error, solo al momento de ejecucion, como dije antes, sin el try catch.

incluso al inicio de la funcion hice lo siguiente para verificar que no hallan datos nulos

Código Java:
Ver original
  1. for(int i = 0; i < facturas.size(); i++) {
  2.     if(facturas.get(i) == null) {
  3.            System.out.println("es nulo en "+i);
  4.            facturas.remove(i);
  5.      }
  6. }

Y no mostro un solo dato nulo.
  #5 (permalink)  
Antiguo 11/04/2015, 06:29
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: Problema raro con List

En buscarFactura, cuando haces

if(facturas.isEmpty())

Ese facturas que es? Una variable de instancia? Cuando la inicializas?


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #6 (permalink)  
Antiguo 11/04/2015, 08:01
Avatar de Andreslrz  
Fecha de Ingreso: septiembre-2008
Mensajes: 99
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema raro con List

En el codigo puse la anotacion de eso, es un arrayList declarado en la clase y se inializa en el contructor. Pero el problema del null no es en ese punto si no en el for. puse el resto de codigo, por si lo consideraban necesario.

Como dije antes, todos los datos estan, pero al recorrer la lista sin poner try catch muestra un NullPointerException y al ponerlo, el try catch, no entra al catch, como si el error no existiera. Igualmente use el depurador con el step y funciona bien, no muestra el error si no al ejecutar el programa cuando quito el try catch.

Igual estube preguntando a compañeros y no soy el unico que le ha pasado, al final toca dejar el try catch por prevencion.

Como que a futuro mejor trabajare con otro lenguaje, ya que no es la primera vez que me muestra errores incomprensibles, en otras ocasiones me ha tocado ecribir la linea de codigo en block de notas copiarla y pegarla en el ide y eso soluciona el problema, extraño pero ha funcionado.

Última edición por Andreslrz; 11/04/2015 a las 08:07
  #7 (permalink)  
Antiguo 11/04/2015, 16:19
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problema raro con List

Cita:
Iniciado por Andreslrz Ver Mensaje
Igual estube preguntando a compañeros y no soy el unico que le ha pasado, al final toca dejar el try catch por prevencion.

Como que a futuro mejor trabajare con otro lenguaje, ya que no es la primera vez que me muestra errores incomprensibles, en otras ocasiones me ha tocado ecribir la linea de codigo en block de notas copiarla y pegarla en el ide y eso soluciona el problema, extraño pero ha funcionado.
Lo que cuentas es muy extraño, nunca me han pasado esas cosas. Lo único que se me ocurre es que hagáis algo extraño compilando y que el código que ves en el IDE no es el compilado.

Compilando en ejecución a veces no se pasan los cambios al servidor, lo notas por ejemplo viendo que en debug pasa por una línea en blanco o se salta trozos de código.

Cosas raras que me han sucedido:

-Un xml empieza a dar error sin que se haya cambiado, la solución parecida a la tuya, cortar el texto, guardar y volver a copiar.

- Una clase de repente empieza a dar errores porque no reconoce los import, incluso de clases en su mismo paquete. La solución limpiar proyecto y hacer refresh hasta que le pasa la tontería.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #8 (permalink)  
Antiguo 13/04/2015, 13:54
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 16 años, 5 meses
Puntos: 69
Respuesta: Problema raro con List

Cita:
Iniciado por Andreslrz Ver Mensaje
Hola.

Me he encontrado con problema un poco extraño trabajando con listas, creo una lista y al crearla hago todas las validaciones para que ningun dato sea nulo, la recorro y verifico que los filtros hallan funcionado y cuando hago el llamado desde el programa me muestra una cantidad de null pointer exception, volvi y verifique y empece a depurar paso a paso y no mostraba el error asi que volvi a ejecutar el programa y nuevamente lanza la excepcion.

Para verificar que podia ser el error encerre el for en un try catch y graciosamente el error desaparecio, sin lanzar la excepcion.

¿Alguien sabe a que se deba esto? la verdad he trabajado con java y he visto cuanto error raro se pueda imaginar.
Hola no se si estes manejando beans de session. Una vez me pasó esto con una lista de RFCs pero era por que el bean de session no tenia @SessionScoped entonces se moría y la lista "se vaciaba" a la última hora de cargar la visualización.-.... #justsayin
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar

Etiquetas: list, programa, raro
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 00:07.