2013-07-23 2 views
0

Я явно бросаю исключение в обработанный метод и не поймаю его, поэтому обработчик исключений EDT должен его поймать, и в идеале EDT должен перестать работать, но когда я нажимаю на кнопку кадра, EDT снова начал . Как поток можно перезапустить?Необлученное исключение в прослушивателе событий

+0

Просьба уточнить ваш вопрос и показать нам код, который вы уже пробовали. –

ответ

1

EDT - это особый случай. Он перезапускается всякий раз, когда он останавливается при вызове неперехваченного исключения.

Это хороший дизайн, потому что он гарантирует, что ваш весь графический интерфейс не сбой и сжигание из-за неперехваченного исключения где-нибудь внутри, скажем, действия кнопки.

+0

Вы утверждаете, что EDT фактически отключится в случае исключения? – Kayaman

+0

@ Kayaman Да, я думал, что он умер и был перезапущен. –

+0

Нет, у него есть обработчик исключенных исключений, который предотвратит смерть нити. – Kayaman

2

Когда нить генерирует исключение, которое не было обнаружено, будет вызываться Thread.UncaughtExceptionHandler. Если он не был установлен, вызывается обработчик исключительных ситуаций по умолчанию. Обработчик отобразит stacktrace и, скорее всего, будет перезапущен, хотя в документации не указано, что именно делается.

+0

http://stackoverflow.com/questions/4448523/how-can-i-catch-event-dispatch-thread-edt-exceptions обсуждает события исключений EDT. – Kayaman

Смежные вопросы