E.PrintStackTrace de Java () n'imprime pas tous les détails de la trace de la pile de l'exception interne. P>
Y a-t-il une méthode prête pour générer la trace de pile complète sous forme de chaîne? (en plus de le formater moi-même) p>
Je viens de découvrir ce que PrintStackTrace () apparemment - apparemment les cadres de pile que les filtres sont exactement ceux communs à l'exception interne et à l'extérieur. Donc, en fait, c'est plutôt ce que je veux, et pas la trace de la pile «pleine». P>
3 Réponses :
Je suggère que vous utilisiez le Exceptionnel classe de Apache Commons Lang, qui fournit une méthode utile pour cela. P>
En fait, GetfullstackTrace () n'imprime toujours pas la trace de la pile intérieure.
Malheureusement, il n'y a pas de méthode impriméeLstackTrace (), mais vous pouvez faire système.err.println (getfletStackTrace ());
Oui, vous pouvez utiliser la classe StackTraceElement renvoyée par jetonable.getstacktrace () et trouvez les détails. P>
de l'API: P>
Le dernier élément de la matrice (en supposant que la longueur de la matrice est non-zéro) représente le bas de la pile, qui est la première méthode Invocation dans la séquence. P> blockQuote>
J'ai fini par rouler le mien (j'ai pris la mise en œuvre de jetonable.PrintStackTrace () et a modifié un peu):
Avez-vous manqué d'imprimer une trace de pile pour une exception intérieure ici? if (e! = null) imprimante.println ("causé par: \ r \ n"); code>
Quelque chose comme imprimante.println ("causé par: \ r \ n" + jointsacktrace (e)) code>?
Comment voulez-vous dire la trace de la pile d'exception intérieure? Une exception attrapée est-elle propagée dans une autre exception?
Quelque chose qui produit par une prise ... jeter une nouvelle exception ("foo", e)
Je viens de découvrir ce qu'est-ce que PrintStackTrace (), apparemment, les trames de pile que les filtres sont exactement ceux communs à l'exception interne et à l'extérieur. Donc, en fait, c'est plutôt ce que je veux, et pas la trace de la pile «pleine».