打印堆栈跟踪与打印行相关

时间:2015-05-15 21:46:33

标签: java exception stack trace

对不起,如果这是一个不起眼的问题。

当使用System.out.println(),然后打印堆栈跟踪时,两者似乎重叠并相互干扰。

此代码:

<style name="custom" parent="Theme.Dialog.AppError">
    <!-- it shows error: Error retrieving parent for item: No resource found that matches the given name 'Theme.Dialog.AppError'-->.
</style>

产生此输出

System.out.println("Multiple definitions for " + analyzer.name + ":");
for (String name : resultNames) {
    System.out.println('\t' + name);
}
throw new RuntimeException("Multiple class definitions found matching " + analyzer.name);

预期的行为是在任何堆栈跟踪之前打印Analyzer1,Analyzer2等。但相反,两者似乎是在彼此之上打印,这使得难以阅读的结果。

我做错了什么?

修改 Kon的回答解释了这一点,但我不知道如何标记为已解决。

1 个答案:

答案 0 :(得分:2)

System.out.println被缓冲,而错误输出未被缓冲。这意味着在您看到System.out.println的结果之前偶尔会有延迟。通过System.err.println报告异常,它没有缓冲,因此立即打印。

尝试将System.out.println语句切换到System.err.println,然后查看问题是否已解决。