我正在开发一个带有执行自定义绘画的组件的Swing应用程序。当我在绘画代码中犯了一些错误并引发异常时,这种情况很难调试。不会被调试器捕获,而是显示带有异常信息的弹出窗口。此外,线程似乎已重新启动,并且由于编码错误而导致异常,因此该线程一次又一次地显示出来。
当我有幸切换到调试器时(这很困难,因为随着应用程序收到绘画请求,越来越多的弹出窗口不断出现),调试控制台会向我显示异常信息,例如:
严重:线程中引发了未捕获的异常[AWT-EventQueue-0,6,main]
....堆栈如下
我的应用程序是用Scala编写的,并且正在使用IntelliJ IDEA14。调试器可以很好地处理我未捕获的主线程异常(我已经在中Uncaught exception
启用了Any exception
断点功能Java Exception Breakpoints
),但是AWT线程中的异常却没有。
我已尝试按照此方法中的描述安装处理程序。如何检测Java中何时全局抛出了异常?回答,但是我的处理程序似乎没有被触发。
我想实现以下(按重要性顺序):
(注意:虽然这是Scala应用程序,但我假设Java的行为相同,因此是Java标记)。
根据此链接,您必须同时处理常规Exception
和EDT Exception
不使用旧的sun.awt.exception.handler
hack(自Java 7开始不再起作用)
这是你的 ExceptionHandler
public static class ExceptionHandler implements Thread.UncaughtExceptionHandler
{
public void uncaughtException(Thread thread, Throwable thrown)
{
// TODO handle your Exception here
}
}
用法:
// Regular Exception
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler());
// EDT Exception
SwingUtilities.invokeAndWait(new Runnable()
{
public void run()
{
// We are in the event dispatching thread
Thread.currentThread().setUncaughtExceptionHandler(new ExceptionHandler());
}
});
我正计划创建可调整队列大小的可调整线程池。我正在使用unbounded LinkedBlockingQueue和一个外部设置,该设置控制排队的消息数量。最初,my corepoolsize和maxpoolsize是相等的。现在,如果我想在运行时更新我的线程池大小,我通过一个公共设置将corepoolsize和maxpoolsize设置为不同的值。我想知道你对这种做法有什么看法。 当maxpools
我正在尝试将文件读取到中,但它提供了一些异常。我正在使用POI库。我该怎么办?请帮帮我。这是我的代码: 这是:
出于某种原因,这段代码给出了标题中给出的错误,然后是大量异常列表。然后控制台会加载,但不会加载任何数据,您必须将鼠标悬停在控制台的每个部分上才能让它显示出来。有什么帮助吗? 编辑:以下是例外:
问题内容: 我们希望在应用程序日志中跟踪这些异常-默认情况下,Java只会将它们输出到控制台。 问题答案: 在EDT中和EDT外,未捕获的异常之间存在区别。 另一个问题有一个解决方案,但是如果您只想咀嚼EDT部分的话…
问题内容: 我在使用netbeans Swing GUI的线程方面遇到问题。这是我第一次真正尝试使用Java的文件系统通知程序为备份程序开发GUI。我有两个文件和。 我几乎要发生的事情是,在文本字段中输入目录路径,该目录路径将创建一个同步线程,该线程将创建一个新的同步对象,然后对该对象进行调用。当该目录中的文件更改时,我想将有关更改的文本添加到列表中。 在当前状态下,UI不再无响应,但是并没有在我
我需要一个库或我们的软件工具,可以: 1)将线程/作业/任务(任何东西--如果需要,我们可以重写代码,我们在mintue有线程对象)放入像system这样的队列中2)我们可以定义同时最多运行多少线程3)线程完成后,线程从队列中移除,这样GC就可以移除所有涉及的实体。 我正在进行大量阅读,发现ExecutorService(Executors.newFixedThreadPool(5);)但问题可能