Trouver d'où part une exception (par exemple déréférencement d'un null)

Le
Vincent Belaïche
Bonjour,

Je suis nouveau en Java. Récemment j'ai corrigé un bug dans lequel j'appelais
un méthode sur un objet dont la référence valait null (donc sur pas d'objet du
tout, c'était ça le bug).

Comme je savais où chercher j'ai trouvé assez rapidement avec le debogueur jdb
(j'utilise l'environnement jdee). Ma question c'est plutôt dans le cas
général, comment quand une exception de ce genre se déclenche trouver
l'endroit où ça s'est produit.

Dans jdb quand ça se produit on obtient ce genre de sortie:


8<8<8<8<8<8<8<8<8<
main[1] cont
>
Exception occurred: java.lang.NullPointerException
(uncaught)"thread=AWT-EventQueue-0", java.awt.EventDispatchThread.run(),
line6 bci2

AWT-EventQueue-0[1]
8<8<8<8<8<8<8<8<8<

Là si je tape `wherei' voici ce que ça produit:

8<8<8<8<8<8<8<8<8<
wherei
[1] java.awt.EventDispatchThread.run (EventDispatchThread.java:156), pc = 152
8<8<8<8<8<8<8<8<8<

Ca ne m'aide pas beaucoup : n'y a-t-il pas moyen de revenir au thread d'où est
partie l'exception et de retrouver la ligne dans le code source correspondant?

Merci d'avance,

Vincent.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
yliur
Le #18910521
Il n'y a pas de console où afficher des sorties dans ton programme ?
- Soit ton exception n'est pas capturée et sa pile d'appels s'affiche
dans la console.
- Soit tu captures l'exception avec un try/catch et tu peux écrire
quelque chose comme ça pour afficher la pile d'appels qui a mené à
l'exception :
try
{
...
}
catch (Exception e)
{
e.printStackTrace() ;
...
}
Vincent Belaïche
Le #18913411
Salut,

Merci, en fait je n'y ai tout simplement pas pensé du tout, mais la sortie
d'erreur était redirigée vers un fichier, où ce genre d'info apparaissait.

Merci !
Vincent.

yliur a écrit :
Il n'y a pas de console où afficher des sorties dans ton programme ?
- Soit ton exception n'est pas capturée et sa pile d'appels s'affiche
dans la console.
- Soit tu captures l'exception avec un try/catch et tu peux écrire
quelque chose comme ça pour afficher la pile d'appels qui a mené à
l'exception :
try
{
...
}
catch (Exception e)
{
e.printStackTrace() ;
...
}



Publicité
Poster une réponse
Anonyme