SwingUtilities.invokeAndWait()
会引发InterruptedException
和InvocationTargetException
我该如何处理?
public static void invokeAndWait(Runnable doRun) throws InterruptedException,
InvocationTargetException
我想使用该方法显示一个对话框并等待用户说是或否。据我所知,InvocationTargetException
表示有一个RuntimeException
,我可以这样对待它。然而,我真正想要的InterruptedException
是忽略它并让线程继续,直到用户给出答案。
答案 0 :(得分:2)
在此article中解释了InterruptedException。
InvocationTargetException,如果Runnables run方法抛出异常,则抛出它。
也许运行这个例子澄清了事情:
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 :(得分:1)
显示对话框时出现InterruptedException非常罕见。您可以忽略它,或者再次尝试通过在新的Runnable上调用invokeAndWait来显示对话框。
如果对话框是独立调用的(即不是主GUI的一部分),使用invokeAndWait就可以了。但是,如果要在EDT中显示对话框,则可能不希望使用invokeAndWait。更多详情:Concurrency in Swing