小编典典

如何增加Java堆栈跟踪转储的显示行数?

java

有没有一种方法可以Throwable.printStackTrace(PrintStream s)打印出完整的堆栈轨迹,以便我能看到的最后一行”… 40 more”?


阅读 281

收藏
2020-03-24

共1个答案

小编典典

你不需要 该信息存在于堆栈跟踪中的其他位置。来自的文档printStackTrace():

注意存在包含字符的行"..."。这些行指示此异常的堆栈跟踪的其余部分与由该异常(“封闭”异常)引起的异常的堆栈跟踪的底部指示的帧数匹配。

在从捕获“引起性异常”的相同方法引发包装异常的常见情况下,该速记可以大大缩短输出的长度。

换句话说,"... x more"唯一出现在链接的异常上,并且仅当x堆栈跟踪的最后几行已作为另一个链接的异常的堆栈跟踪的一部分出现时才出现。

假设方法捕获了异常Foo,将其包装在异常Bar中,然后抛出Bar。然后,Foo的堆栈跟踪将被缩短。如果你出于某种原因想要完整的跟踪,则只需...在Foo的堆栈跟踪中获取最后一行,然后在Bar的堆栈跟踪中查找;该行下方的所有内容恰好是Foo的堆栈跟踪中将打印的内容。

2020-03-24