J'ai une méthode qui ressemble à ceci:Impossible de déterminer ce qui est de lancer une exception NullPointer
try {
doStuff();
} catch (Exception ex) {
logger.error(ex);
}
(je ne l'utilise pas vraiment les noms des méthodes comme doStuff - ceci est juste pour rendre les choses faciles)
en doStuff je fais toutes sortes de choses, parmi eux est d'appeler une méthode d'accès aux données (ainsi, une autre méthode dans doStuff) qui se termine par ce qui suit:
} catch (SQLException ex) {
logger.error(ex);
} finally {
try {
connection.close();
proc.close();
results.close();
} catch (Exception e) {
logger.error(e);
} //<--Exception thrown here. HUH?
}
return stuff;
Quand marcher à travers ce code, je reçois la accolade de la seconde à la dernière (marquée par un commentaire), puis saute à la capture dans le premier bloc de code avec une exception NullPointer. Le results.close()
est ce qui est exécuté juste avant (les résultats ne sont pas Nuls). Mon IDE (NetBeans) ne fournit pas de trace de pile (il montre que la trace de la pile est null) ou toute autre information que le nom de l'exception (d'après ce que je peux dire).
Ce code fonctionnait correctement précédemment. En fait, pendant qu'il était en cours d'exécution, j'ai changé la procédure stockée que la méthode d'accès aux données (où j'obtiens cette exception) appelait, puis cette erreur a commencé à se produire (sans que l'application ait été arrêtée du tout). J'ai depuis essayé de reconstruire et de redémarrer mais en vain. Je pourrais changer le sproc, mais je veux vraiment savoir de quoi cette erreur provient, car cela n'a aucun sens que le sproc fasse même partie de cette situation en considérant où se trouve l'exception dans le code.
Que montre ex.printStackTrace()? –
Question idiote, mais 'logger' est-il nul? –
Je vais essayer, mais le navigateur de variables montre que la pileTrace est nulle. Aussi @Matt-logger est en effet initialisé dans les deux méthodes référencées ci-dessus. Dans la seconde, il n'essaie même pas d'entrer dans ce bloc d'Exceptions (normalement, quand il passe à travers, il entre dans la capture, puis entre - cela va des résultats à l'accolade à la capture de la première méthode). –