【问题标题】:Java Debugging - Concurrency of ExceptionsJava 调试 - 异常并发
【发布时间】:2012-04-12 07:07:06
【问题描述】:

我正在使用 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 之前)?

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

克里斯

【问题讨论】:

    标签: java debugging exception netbeans concurrency


    【解决方案1】:

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

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

    【讨论】:

    • 啊,谢谢,有道理。我可以删除 System.err 的使用,但它们很有用,因为它们以红色突出显示我的输出,而其他一切都是黑色。有没有办法选择输出文本颜色?谢谢! -Add:我要去玩玩diogonunes.com/it/work/jcdp)
    • JCDP 看起来很有前途,以前从未听说过。虽然我不确定它是否适用于 NetBeans 控制台。除此之外,System.err 输出的着色由您的 IDE 完成,我没有使用 NetBeans 的经验,所以我不知道您是否可以更改输出的颜色,但您可能想查看属性在那里。
    • PS - 对于任何有兴趣让它工作的人:JCDP 站点在下载中提供了最新的 JANSI jar 文件,但是 JANSI 开发人员更改了方法,使它们与 JCDP 不兼容。如果你想使用 JCDP,请jansi.fusesource.org/download.html 并下载早期版本的 JANSI(我刚刚尝试了 1.0 并且可以使用)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2012-07-20
      • 2013-03-01
      • 1970-01-01
      相关资源
      最近更新 更多