gpt4 book ai didi

java - 抛出 Swing 异常时显示对话框

转载 作者:行者123 更新时间:2023-12-02 00:21:15 25 4
gpt4 key购买 nike

我有一个使用 swing 的 Java 应用程序。我找到了一种捕获应用程序中所有未捕获异常的方法(见下文)。我想记录一条消息,为用户显示一个包含消息的对话框并终止该应用程序。问题是,我想要捕捉的是一些 Swing 异常。在 UncaughtExceptionHandler 中捕获异常后尝试显示对话框是不可能的,因为 Swing 线程已停止。有什么办法可以显示一个对话框吗?创建一个新的 Swing 线程或类似的东西?

谢谢!

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
boolean alreadyCaught = false;

public void uncaughtException(Thread t, Throwable e) {
if (alreadyCaught)
return;

alreadyCaught = true;
e.printStackTrace();

//show Dialog
}
});

最佳答案

完全有可能从默认的未捕获异常处理程序中显示一个对话框。我们的一款产品在过去 5 年里一直使用这种机制,没有出现任何问题。

我们有一个解决方法,可以解决由于异常终止当前 EDT 而替换 EDT 时出现的问题。我们不使用常规的 SwingUtilities#invokeLater 来显示对话框,而是使用

new Thread( new Runnable() {
public void run() {
EventQueue.invokeLater( aRunnable );
}
} ).start();

这允许 EDT 被新的 EDT 替换,并在新创建的 EDT 上运行 Runnable

关于java - 抛出 Swing 异常时显示对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com