【发布时间】:2015-02-20 14:11:23
【问题描述】:
我正在开发一个带有执行自定义绘画的组件的 Swing 应用程序。当我在绘制代码中出现错误并抛出异常时,情况很难调试。不会被调试器捕获,而是会显示一个带有异常信息的弹出窗口。而且the thread seems to be restarted,由于异常是编码错误,所以反复显示。
当我有幸切换到调试器时(这很困难,因为随着应用程序获取绘制请求,越来越多的弹出窗口不断出现),调试控制台向我显示异常信息,例如:
严重:线程中抛出未捕获的异常[AWT-EventQueue-0,6,main]
....堆栈跟随
我的应用程序是用 Scala 编写的,我使用的是 IntelliJ IDEA 14。调试器可以很好地处理我未捕获的主线程异常(我在 Any exception 中启用了 Uncaught exception 断点Java Exception Breakpoints),但有异常在 AWT 线程中不是。
我已尝试按照this How can I detect when an Exception's been thrown globally in Java? answer 中的说明安装处理程序,但我的处理程序似乎没有被触发。
我想实现以下目标(按重要性排序):
- 避免 AWT 线程在异常时重新启动,或者至少防止弹出窗口显示
- 在调试器中处理未捕获的异常,而不是在控制台中打印
(注意:虽然这是 Scala 应用程序,但我假设 Java 的行为是相同的,因此是 Java 标记)。
【问题讨论】:
-
您提到异常是在绘画中引发的。你确定吗?如果没有堆栈跟踪,就很难回答这个问题。但是,如果您知道异常来自哪里,您就不能分析代码中的错误,添加异常处理。基于异常的行上的条件断点应该会有所帮助。
标签: java scala debugging intellij-idea awt