0

我正在使用 java 和 netbeans IDE,我正在尝试调试到输出窗口。我的日志以运行顺序打印到输出窗口,但异常除外,这些异常往往在代码运行中提前打印。这是输出的示例 -

19:45:53.266:检查我们是否超过起点 19:45:53.267:SortRequestIdList 中的错误。异常 = [Ljava.lang.Object; 不能转换为 [Ljava.lang.String; 19:45:53.266:我们已经过了起点。检查我们相对于边界的位置 19:45:53.266 :我们低于下限。即将运行 RunnerBelow 19:45:53.267:ListLex 中的错误。异常=空19:45:53.266: *进入RunnerBelow*

所以例外是“提前”打印。有没有一种方法可以控制这些打印的时间,以便(事件 A 在事件 B 之前运行)=>(A 的调试输出出现在事件 B 之前)?

感谢你们提供的任何帮助!

克里斯

4

2 回答 2

2

异常通常使用 System.err 打印,而正常的调试消息将写入 System.out。由于使用两个不同的流来创建输出,有时您会看到在异常之前发生的任何调试消息之前写入的异常。

如果您可以更改生成消息的代码,我建议您在 catch 块中将输出添加到 System.out。(您可以使用 System.out.println(e.getMessage()))。如果这不可能,您可以将相关的调试消息打印到 System.err。

于 2012-04-12T08:33:27.957 回答
1

printStackTrace使用System.err,而对于您可能使用的所有其他输出System.out。要么System.err.println在您的代码中使用(简单的解决方案),要么制作一个接受异常并将其堆栈跟踪打印到的方法System.out(相当困难)。

于 2012-04-12T08:29:10.877 回答