104 votes

Comment augmenter le nombre de lignes affichées d'un vidage de trace de pile Java?

Existe-t-il un moyen de faire en sorte que Throwable.printStackTrace(PrintStream s) imprime le tracé complet de la pile afin que je puisse voir au-delà de la dernière ligne de "... 40 more" ?

132voto

Michael Myers Points 82361

Vous n'avez pas besoin d'; que l'information est présente ailleurs dans la trace de la pile. À partir de la documentation de l' printStackTrace():

A noter la présence de lignes contenant les caractères "...". Ces lignes indiquent que le reste de la trace de la pile pour cette exception correspond à l'indication du nombre d'images à partir du bas de la trace de la pile de l'exception qui a été causé par cette exception (les "enfermer" l'exception").

Ce raccourci permet de réduire considérablement la longueur de la sortie dans le cas courant où un enveloppé exception est levée à partir de la même méthode que le "causal" l'exception est interceptée.

En d'autres termes, l' "... x more" ne s'affiche que sur une enchaîné exception, et seulement lorsque le dernier x des lignes de la trace de la pile sont déjà présent en tant que partie d'un autre enchaînés exception de la trace de la pile.

Supposons qu'une méthode de captures d'exception Foo, l'enveloppe dans exception de la Barre, et le jette de la Barre. Puis Foo trace de la pile sera raccourcie. Si vous voulez la trace complète, tout ce que vous devez faire est de prendre la dernière ligne avant la ... Foo de la trace de la pile et de regarder pour elle dans le Bar de la trace de la pile; tout en dessous de cette ligne est exactement ce qui aurait été imprimé dans Foo trace de la pile.

5voto

jjnguy Points 62123

Devinez rapidement une méthode pour vous.

 static void printLongerTrace(Throwable t){
    for(StackTraceElement e: t.getStackTrace())
        System.out.println(e);
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X