Swing で例外を処理する別のアプローチ。このようなものを使用できます。
public class EventQueueProxy extends EventQueue {
private static final Logger logger = Logger.getLogger( EventQueueProxy.class.getName() );
protected void dispatchEvent( AWTEvent newEvent )
{
try {
super.dispatchEvent( newEvent );
} catch( RuntimeException | Error e ) {
logger.error(e.getCause(),e);
JOptionPane.showMessageDialog( null, "someDescriptiveMessage");
}
}
}
そして、ヘルパーメソッドを使用して設定できます
public static void captureUncaughtExceptionInEvent()
{
EventQueue queue = Toolkit.getDefaultToolkit().getSystemEventQueue();
queue.push(new EventQueueProxy());
}