【发布时间】:2018-08-05 06:01:18
【问题描述】:
我正在做一个家庭作业,将this Knock Knock 应用程序的 Java 教程转换为 Swing GUI 应用程序并使用多线程。
我有抛出异常的辅助类。这些类不扩展 JFrame,我无法创建新的 JOptionPane 来显示异常。您将如何向用户显示该异常?
例如:我有一个类从两个文本文件(一个用于线索,一个用于答案)中加载笑话。如果在我期望的位置找不到文本文件,我将抛出 NullPointerException。因为这是一个辅助类,所以它没有扩展 JFrame。我如何将该消息与用户联系起来?我是否只引用 javax.swing.JOptionPane showMessageDialog 方法,就像我在下面的代码中那样,或者我可以有另一个代理类来捕获异常并显示它们?
private final void getFilePath(ResponseFiles fileToGet) {
String packagePath = "/com/knockknock/message";
try {
if (fileToGet == ResponseFiles.CLUES)
file = new File(getClass().getResource(String.format("%s/clues.txt", packagePath)).getPath());
else if (fileToGet == ResponseFiles.ANSWERS)
file = new File(getClass().getResource(String.format("%s/answers.txt", packagePath)).getPath());
} catch (NullPointerException e) {
javax.swing.JOptionPane.showMessageDialog(null, "Jokes Files Missing", "File Missing", JOptionPane.ERROR_MESSAGE);
}
你怎么看?
【问题讨论】:
-
显示异常最简单的方法就是把它一直扔到顶部,让系统打印出来。您还可以使用记录器记录异常,在 SEVERE 时它通常会打印所有内容。
-
但是如果你只是想显示消息,最简单的方法就是调用 EDT 并使用 JOptionPane 静态方法显示消息:docs.oracle.com/javase/tutorial/uiswing/components/dialog.html
-
看我没想到。我试图扩展 JFrame,这样我就可以使用 JOptionPane,我确信这不是要走的路。我已经编辑了我的原始帖子,现在我有了新的方法。您认为值得拥有一个接受异常并打印出消息的代理类吗?或者那是不必要的复杂性?
标签: java multithreading swing exception-handling