Даже при том, что я никогда не программировал игру, эта книга помогла мне понять много вещей интересным способом.
Если для ThreadGroup установлен обработчик исключений, JVM передает ему исключение. Если это поток AWT, вы можете установить обработчик событий для необработанных в противном случае исключений. В противном случае его обрабатывает JVM.
Пример группы потоков с настраиваемым обработчиком и способы его использования:
public class MyThreadGroup extends ThreadGroup {
public MyThreadGroup() {
super("My Thread Group");
}
public void uncaughtException(Thread t, Throwable ex) {
// Handle exception
}
}
Thread t = new Thread(new MyThreadGroup(), "My Thread") { ... };
t.start();
Пример использования обработчика исключений AWT:
public class MyExceptionHandler {
public void handle(Throwable ex) {
// Handle exception
}
public void handle(Thread t, Throwable ex) {
// Handle exception
}
}
System.setProperty("sun.awt.exception.handler", MyExceptionHandler.class.getName());
Если вы отправили Runnable в ExecutorService , вы можете перехватить исключение как заключенное внутри ExecutionException . (Настоятельно рекомендуется вместо простого вызова run ())
Возможно, если вы назначите его ThreadGroup , которая реализует метод uncaughtException (Thread, Throwable) .