7
votes

Nullpointerexception java

Tout d'abord, je suis un programmeur expérimenté, mais j'ai très peu de familiarité avec Java. J'ai environ deux ans d'expérience avec elle, il y a huit ans.

Je reçois une nullpoinpoincerexception dans le code suivant: p> xxx pré>

voici la stacktrace: p> xxx pré>

la stacktrace Points à cette ligne: P>

        if(gfexResponse.getMessage()!= null){  <-------- this line
            request.setAttribute("message", gfexResponse.getMessage());
        }


1 commentaires

Ajoutez un chèque pour voir si gfexreesponse == null . Null Pointer Exceptions à Java sont généralement très faciles à déboguer, car vous essayez d'appeler une méthode sur un objet NULL.


5 Réponses :


12
votes

Cette erreur indique que l'objet gfexResponse est null (c.-à-d. action.execute (événement) renvoie null dans le code ci-dessus et aucune exception n'est lancée)


1 commentaires

+1 Nice Catch sur action.execute (événement) . Votre réponse est la seule qui dit pourquoi gfexreesponse est null ..



1
votes

réellement problème réalise à la ligne gfexreesponse = action.execute (événement);

seule chance dans la ligne ci-dessous pour obtenir NPE ici est gfexreesponse est NULL < / p> xxx

changez-le sur xxx


2 commentaires

Merci. Je l'ai essayé, obtenant toujours la même exception au même point.


Vous les gars cloué, merci! Je me suis trompé à ce sujet sur le même point.



1
votes

Êtes-vous sûr que gfexreesponse obtient une valeur réelle de action.execute (événement); (dans le essayer {} )? Je suppose que action.execute (événement); renvoie null.


1 commentaires

Je suppose que je devrai comprendre comment utiliser le mode de débogage.



4
votes

Votre contour de base est ceci:

public static void handle(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException {

    Response gfexResponse = null;

    try {
        //Try to get your gfexResponse
        //Make sure you got your response object and throw SomeAppropriateException if not
        //Do some stuff with gfexResponse
    } catch (SomeAppropriateException e) {
        //properly handle this case
    } catch (Exception ex) {
        //properly handle the general case that something else failed (But you should try to be more specific)
    } finally {
        //remove any resources that might not be properly cleaned up if an exception is thrown.
    }       
}


1 commentaires

Vous avez raison à propos de cette mauvaise pratique, @nathaniel Ford. Malheureusement, c'est la façon dont il a été codé à l'origine, et personne en gestion ne va bien les dépenses pour fixer tout cela. Ceci est juste un petit site Web, mais les développeurs originaux ont manipulé le contrôle de flux de la même manière partout.



1
votes

Pour résoudre la douleur immédiate - votre action.execute (événement); renvoie probablement null . Cependant, cela peut être atténué de plusieurs manières:

  • Vérification NULL, ou
  • Tourner le bloc TRY-CATCH dans son propre appel de méthode distinct, pour renvoyer réponse .

    à partir de là, le bloc enfin devient le principal objectif de votre méthode et vous pouvez vérifier NULL sans avoir à vous soucier de enfin . .


0 commentaires