Что я должен делать с исключениями, генерируемыми SwingUtilities.invokeAndWait - PullRequest
4 голосов
/ 17 февраля 2010

SwingUtilities.invokeAndWait() выдает InterruptedException и InvocationTargetException как мне их обработать?

 public static void invokeAndWait(Runnable doRun) throws InterruptedException,
                                 InvocationTargetException

Я хочу использовать метод, чтобы показать диалоговое окно и подождать, пока пользователь скажет да илинет.Насколько я могу сказать, InvocationTargetException означает, что был RuntimeException, и я могу относиться к нему так.Однако то, что я действительно хотел бы для InterruptedException, это игнорировать его и продолжать поток, пока пользователь не даст ответ.

Ответы [ 2 ]

2 голосов
/ 17 февраля 2010

InterruptedException объясняется в этой статье .

InvocationTargetException, он генерируется, если метод runnables запускает исключение.

Возможно, выполнение этого примера проясняет ситуацию:

        try {
        SwingUtilities.invokeAndWait(new Runnable() {
            public void run() {
                System.out.println("1");
                if (true) {
                    throw new RuntimeException("runtime exception");
                }
                System.out.println("2");
            }
        });
    } catch (InterruptedException e) {
        e.printStackTrace(System.out);
    } catch (InvocationTargetException e) {
        e.printStackTrace(System.out);
    }
1 голос
/ 17 февраля 2010

Исключение InterruptedException при отображении диалогового окна будет крайне редким. Вы можете проигнорировать его или попробовать снова отобразить диалог, снова вызвав invokeAndWait для нового Runnable.

Если диалог вызывается как самостоятельный (т.е. не как часть основного графического интерфейса), использование invokeAndWait - это нормально. Однако если вы отображаете диалог из EDT, вы можете не использовать invokeAndWait. Подробнее здесь: Параллелизм в Swing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...