我正在使用一个名为MyExceptionHandlerimplements 的类Thread.UncaughtExceptionHandler来处理我的项目中的正常异常.
据我所知,这个类无法捕获EDT异常,所以我尝试在main()方法中使用它来处理EDT异常:
public static void main( final String[] args ) {
Thread.setDefaultUncaughtExceptionHandler( new MyExceptionHandler() ); // Handle normal exceptions
System.setProperty( "sun.awt.exception.handler",MyExceptionHandler.class.getName()); // Handle EDT exceptions
SwingUtilities.invokeLater(new Runnable() { // Execute some code in the EDT.
public void run() {
JFrame myFrame = new JFrame();
myFrame.setVisible( true );
}
});
}
Run Code Online (Sandbox Code Playgroud)
但直到现在它还没有用.例如,在初始化JFrame时,我从构造函数中的bundle文件加载其标签,如下所示:
setTitle( bundle.getString( "MyJFrame.title" ) );
Run Code Online (Sandbox Code Playgroud)
我MyJFrame.title从bundle文件中删除了密钥以测试异常处理程序,但它不起作用!例外通常打印在日志中.
我在这里做错了吗?
这是我看到的常见模式,其中与异常关联的错误代码存储为静态最终整数.当创建要抛出的异常时,它将使用这些代码之一以及错误消息构造.这导致该方法要抓住它必须查看代码然后决定一个行动方案.
替代似乎是 - 为每个异常错误情况声明一个类(尽管相关的异常将从一个公共基类中解除)
有中间地带吗?推荐的方法是什么?