Eclipse/Java: неперехваченные исключения в EDT приостанавливают выполнение в EventDispatchThread.run()

Это небольшое раздражение, которое у меня возникает при отладке с помощью 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();
            }
        });
    }
}

А вот как это выглядит после выбрасывания исключения:

Приостановлено на EventDispatchThread.run()EDIT 21/10/2011: ничего странного не происходит с Eclipse или отладчиком Java, просто исключения перехватываются и повторно создаются в EventDispatchThread.pumpOneEventForFilters(int). Я полагаю, что нет способа сказать Eclipse «приостановить выполнение исключений, которые будут перехвачены и, возможно, повторно сгенерированы». Очень плохо.


person kylewm    schedule 19.10.2011    source источник


Ответы (3)


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

person trashgod    schedule 19.10.2011
comment
Полезно знать, что NetBeans действует аналогично, возможно, проблема связана с JPDA, а не с Eclipse. И спасибо за предложение, но все еще такое же раздражающее поведение даже с необработанным обработчиком исключений. - person kylewm; 20.10.2011

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

person kylewm    schedule 25.10.2011

У меня была эта проблема, и я нашел то, что сработало для меня.

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

введите здесь описание изображения

person WineGoddess    schedule 28.01.2014