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


Y a-t-il un moyen de faire Throwable.printStackTrace(PrintStream s) imprimez la trace complète de la pile, afin que je puisse voir au-delà de la dernière ligne de "... 40 more"?

Author: Michael Myers, 2009-07-23

2 answers

Vous n'en avez pas besoin; cette information est présente ailleurs dans la trace de la pile. À partir des documents de printStackTrace():

Remarque la présence de lignes contenant les caractères "...". Ces lignes indiquent que le reste de la trace de pile pour cette exception correspond au nombre indiqué de trames du bas de la trace de pile de l'exception qui a été provoquée par cette exception (l'exception "englobante").

Ce raccourci peut réduire considérablement la longueur du sortie dans le cas courant où une exception encapsulée est levée à partir de la même méthode que "l'exception causative" est capturée.

En d'autres termes, le "... x more" n'apparaît que sur une exception chaînée, et seulement lorsque les dernières lignes x de la trace de pile sont déjà présentes dans le cadre de la trace de pile d'une autre exception chaînée.

Supposons qu'une méthode attrape exception Foo, l'encapsule dans exception Bar et lance Bar. Ensuite, la trace de la pile de Foo sera raccourcie. Si vous voulez le trace complète, tout ce que vous devez faire est de prendre la dernière ligne avant le ... dans la trace de pile de Foo et de la rechercher dans la trace de pile de la barre; tout en dessous de cette ligne est exactement ce qui aurait été imprimé dans la trace de pile de Foo.

 109
Author: Michael Myers, 2015-09-06 09:58:35

Devinez rapidement une méthode pour vous.

static void printLongerTrace(Throwable t){
    for(StackTraceElement e: t.getStackTrace())
        System.out.println(e);
}
 4
Author: jjnguy, 2009-07-22 20:08:41