4

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

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

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

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

有什么想法吗?

养乐多

4

3 回答 3

6

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

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    
}
于 2012-07-19T14:59:52.077 回答
1

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

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

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

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

好的

于 2012-07-19T15:11:35.000 回答
0

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

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

于 2012-07-19T14:59:56.260 回答