0

Tengo un problema que sólo pasa cuando subo cambios en ambientes de calidad y cuyo servidor es el WAS websphere application server en mi local estoy usando tomcat 7 con eclipse, el detalle es que en local no marca error (Eclipse) pero ya en calidad (donde esta alojado el aplicativo) en el WAS genera un error de nullpointerExceptioneste es el código donde genera dicho error.

private double calculaInversion(String nb_serie,List<VivVAACInversion> catalogoInversion) {

          String rs=VAACServiceImpl.correspondencia.get(nb_serie);
            double id=0;

        try {

            for (VivVAACInversion vivVAACInversion : catalogoInversion) {
                if(rs.equalsIgnoreCase(vivVAACInversion.getNombreClave())){
                    id=vivVAACInversion.getIdInversion();
                }
            }



        }catch(Exception e) {
            System.out.println( "exception: " + e.getMessage());
        }

        return id;
    }

Intenté meter un try catch pero con esto no es suficiente para controlar la Exception, podrian ayudarme de favor en como la podria controlar con un validador ya sea con un ifque dicho metodo se ejecute con normalidad y que ese nullpointerexception desaparezca?

Quedo al pendiente y si hace falta que no se entienda con gusto lo pongo, saludos cordiales.

Levi Arista
  • 2,742
  • 2
  • 12
  • 24
  • Si el error es un NPE, probablemente es una instancia que está en Null, como VAACServiceImpl. Igualmente, ese catch() va a mostrar una linea de error en la consola, pero va a "ocultarlo", lo cual puede ser peor. Es mejor manejarlo o volverlo a disparar, para que alguien afuera lo maneje (es decir, luego del println hacer un throw e) – gorlok May 16 '18 at 16:43
  • No se trata de que no haya excepciones, se trata de que el código funcione. Si simplemente te comes las excepciones o "te las saltas" con un `if`, tu código no dará ninguna excepción pero tampoco hará lo que se supone que hace. Busca donde tienes un `null` inesperado, mira qué significa y corrige tu código en función de lo que se supone que tiene que hacer. Si solo quieres que no de excepciones, te basta con sustituir el código por `return 0.0;`. – SJuan76 May 16 '18 at 16:44
  • Hola, gracias por sus comentarios, aqui el detalle que si hace lo que tiene que hacer el programa, pero en mi ambiente local (eclipse) todo bien, en los logs en el aplicativo si genera ese error ´NPE´, donde está alojado subo tal cual está por medio de una herramienta dimensions se suben, es como un repositorio y donde dice return 0.0 ese cual es la razón de eso amigo? quedo al pendiente saludos – JUAN JOSE BUSTAMANTE SOLIS May 16 '18 at 17:21
  • Hola amigos buenas noches, el código como tal estaba todo bien, lo que pasaba es que el servidor dónde estaba alojado la aplicación en producción no estaba desplegando este codigo, al final todo salió bien, de antivirus les agradezco por su tiempo en red mi pregunta, saludos y buena vibra – JUAN JOSE BUSTAMANTE SOLIS May 19 '18 at 02:32

1 Answers1

0

El problema de querer brincarte una Excepción si no sabes por que es, es que el problema puede estar en que tu servidor local no esté detectando el problema, que en teoría venga de que la información que proceses sea diferente. Yo pondría varios if's que te muestro para poder entender donde está el campo nulo que está generando la excepción:

private double calculaInversion(String nb_serie,List<VivVAACInversion> catalogoInversion) {
  try{
      if (nb == null) {
          throw new IllegalArgumentException(" serie nula");
      }
      if (catalogoInversion == null) {
          throw new IllegalArgumentException("catalogo nulo");
      }
      String rs=VAACServiceImpl.correspondencia.get(nb_serie);
      if (rs == null) {
          throw new IllegalStateException("serie reportada nula o no localizada");
      }
      double id=0;

      for (VivVAACInversion vivVAACInversion : catalogoInversion) {
           String nombre = (vivVAACInversion.getNombreClave());
           if (nombre == null) {
               throw new IllegalStateExeception("hay una clave nula en el catalogo");
           }
            if(rs.equalsIgnoreCase(nombre){
                id=vivVAACInversion.getIdInversion();
                //aquí también preguntaría a menos que el método retorne un int.
            }
        }

    }catch(Exception e) {
        System.out.println( "exception: " + e.getMessage());
    }

    return id;
}

Ya con esto podría ver donde está el nulo que se genera y entonces ver como resolver el problema.

AlbertoLopez
  • 1,541
  • 2
  • 7
  • 13
  • Hola amigo, gracias por tu modificación en mi código, como mencioné en los comentarios de arriba ya se supo cual era el error y es que no estaba desplegando el código de arriba y por eso marcaba error, te mando un saludo y buena vibra! – JUAN JOSE BUSTAMANTE SOLIS May 19 '18 at 02:34