Eclipse / Java: необработанные исключения в EDT приостанавливают выполнение в EventDispatchThread.run () - PullRequest
1 голос
/ 19 октября 2011

Это небольшое раздражение, которое я испытываю при отладке в Eclipse.Если установлен флажок «Приостановить выполнение при невыявленных исключениях», отладчик обычно приостанавливает поток прямо там, где было сгенерировано исключение.Исключения в потоке диспетчеризации событий, однако, заставляют его останавливаться в последней строке EventDispatchThread.run ().Нет никакой полезной информации о том, что является исключением или что вызвало его, пока я не возобновлю поток, чтобы позволить трассировке стека печатать на консоль.

Отладка следующего кода в Eclipse для демонстрации:

public class SuspendOnUncaughtTest {
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                ((Object) null).toString();
            }
        });
    }
}

И вот как это выглядит после создания исключения:

Suspended at EventDispatchThread.run() РЕДАКТИРОВАТЬ21.10.2011: Полагаю, с Eclipse или Java-отладчиком не происходит ничего странного, просто исключение перехватывается и перебрасывается в EventDispatchThread.pumpOneEventForFilters (int).Я полагаю, что у Eclipse нет способа «приостановить выполнение исключений, которые могут быть перехвачены и, возможно, переброшены».Жаль.

Ответы [ 3 ]

1 голос
/ 19 октября 2011

См. Аналогичный результат в NeteBeans, но Thread.setDefaultUncaughtExceptionHandler() может быть полезным в этом контексте. Вот пример здесь .

0 голосов
/ 28 января 2014

У меня возникла эта проблема, и я нашел что-то, что работает для меня.

Я использую Kepler и смог остановить это, перейдя на вкладку контрольных точек перспективы отладчика и сняв флажок в EventDispatchThread.

enter image description here

0 голосов
/ 25 октября 2011

Насколько я могу судить, решения для этого нет. Eclipse ведет себя правильно, правильное поведение просто раздражает.

...