Вот некоторый код, который перехватывает исключение, созданное в потоке отправки событий:
package com.ndh.swingjunk;
import java.awt.EventQueue;
import javax.swing.JFrame;
public class EntryPoint {
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler());
// System.setProperty("sun.awt.exception.handler", MyExceptionHandler.class.getName());
EventQueue.invokeLater(new Runnable()
{
public void run()
{
new SomeWindow("foo").setVisible(true);
}
});
}
}
class SomeWindow extends JFrame {
public SomeWindow(String title) {
this.setTitle(title);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
throw new RuntimeException("hello");
}
}
Я видел предупреждения о том, что исключения, созданные в потоке отправки событий, не обрабатываются UncaughtExceptionHandler, но, похоже, это не относится к моему примеру; он работает одинаково независимо от того, закомментирована ли строка регистрации или оставлена. Мой пример как-то запутался, или регистрация обработчика исключений с помощью sun.awt.exception.handler
больше не нужна?