【问题标题】:Error messages with Java SwingJava Swing 的错误消息
【发布时间】:2012-07-19 14:56:14
【问题描述】:

我有一个关于使用 Java Swing 处理错误条件的问题。

我正在使用 Netbeans 开发一个简单的 Java Swing 应用程序。它是加载一个文本文件,然后根据在文本文件中找到的数字运行计算。主要的 Swing 类包含 JFrame 和 JPanel。

我将文件加载代码作为单独的类文件。它将读取的行数和一个数字列表返回给主 Swing 应用程序。

我意识到如果文件读取失败(即 try -> catch (Exception ex)),整个应用程序将崩溃。处理上述情况导致的错误的最佳方法是什么?也就是说文件加载代码崩溃了,我不希望整个程序崩溃。我想让程序说文件已损坏并等待用户加载新文件。

有什么想法吗?

养乐多

【问题讨论】:

  • 也许你应该显示一些代码来看看你到底做了什么?

标签: java swing netbeans


【解决方案1】:

当你捕捉到异常时,运行:

JOptionPane.showMessageDialog("File is corrupted. Please select a new file.");

然后再次显示文件对话框。

最好在文件无效时将其作为一个循环继续执行。如果存在损坏,那么与其抛出异常,不如设置一个布尔标志并在设置标志时循环。这样,当找到一个好的文件时,while循环就会终止。

例子:

public static void main(String[] args){
    boolean goodFile = false;

    while (!goodFile){
        JFileChooser chooser = new JFileChooser();
        chooser.showOpenDialog();

        goodFile = processFile(chooser.getSelectedFile());
    }
}

private boolean processFile(File file){
    //do you stuff with the file

    //return true if the processing works properly, and false otherwise    
}

【讨论】:

  • 一般来说,这样的东西可能是最好的选择。 +1
  • 不需要循环。它会更复杂。只是按照我的建议,只有当文件损坏时,线程才会再次调用读取模块。
  • 在你访问一个文件之前,你无法知道它是否是一个好文件
【解决方案2】:

是的 问题在于您的 IO 阅读概念 while 循环正在读取到文件末尾等等.. 为了防止你可以使用缓冲阅读器 并使用此代码

String line = null
while((line = reader.readLine())!= null) {
// do stuf
}

如果您在处理读取行时遇到此问题 您只需要通过扩展 Exception 类来创建自己的异常类并将该异常抛出到您的 catch 块中 将消息设置为自定义异常类后,您可以将该消息设置为

 JOptionPane.showMessageDialog(null,"message here"); //showMessageDialog is a static method

好的

【讨论】:

  • 我认为 OP 没有这个问题
【解决方案3】:

您只需捕获异常并将条件放入 catch 块中。如果该文件包含您的应用程序打算处理的其他内容,那么您可以调用您的方法来重新处理另一个文件。

新文件操作的新进程的主要处理将从您的 catch 块开始。因此,通过这种方式,您可以使用 java 抛出的异常以一种全新的方式重新启动您的应用程序,而不是从零级重新启动您的应用程序。

【讨论】:

  • @ewok 你体贴的 cmets 大大扩大了我的无知范围。
猜你喜欢
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 2015-08-29
  • 2019-04-19
  • 2019-01-26
  • 1970-01-01
相关资源
最近更新 更多