NetBeans环境中的java捕获EDT异常
我想捕获所有未捕获的异常并打开一个对话框。首先,我从NetBeans中删除了默认异常处理程序,并将我的处理程序添加为默认处理程序:
java.util.logging.Logger global = java.util.logging.Logger.getLogger("");
for (Handler handler : global.getHandlers()) {
if (handler.getClass().getName().equals("org.netbeans.core.startup.TopLogging$LookupDel"))
{
global.removeHandler(handler);
break;
}
}
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler());
处理程序如下所示:
public static final class ExceptionHandler implements UncaughtExceptionHandler
{
@Override
public void uncaughtException(Thread thread, Throwable throwable)
{
logger.error(throwable.getMessage(), throwable);
ExceptionViewPanel.showException(throwable);
}
}
使用该构造,我只能捕获在EDT之外抛出的异常。我读过关于ThreadGroup的文章,但我不能使用这个解决方案,因为我们在Maven中使用NetBeans,所以我不能用ThreadGroup包装开始线程。来自1.7之前版本的黑客攻击也不再可能,覆盖EventQueue也没有效果
我尝试过很多解决方案,但都不奏效。有没有人能为我提供另一个可行的解决方案
提前谢谢
蒂兹尔
# 1 楼答案
在我自己的项目中,我已经将NetBeans错误处理程序替换为我自己的。我的例子是:
另见组织。netbeans。果心NbErrorManager和org。netbeans。果心NotifyExcPanel了解NetBeans如何使用默认处理程序
您只需要在项目中添加此类