Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing的错误消息_Java_Swing_Netbeans - Fatal编程技术网

Java Swing的错误消息

Java Swing的错误消息,java,swing,netbeans,Java,Swing,Netbeans,我有一个关于用JavaSwing处理错误条件的问题 我正在使用Netbeans开发一个简单的javaswing应用程序。它是加载到文本文件中,然后根据文本文件中找到的数字运行计算。主Swing类保存JFrames和JPanel 我将文件加载代码作为一个单独的类文件。它将读取的行数和数字列表返回主Swing应用程序 我意识到,如果文件读取失败(即try->catch(Exception ex)),整个应用程序将崩溃。处理由上述场景导致的错误的最佳方法是什么?也就是说,文件加载代码崩溃,我不希望整个

我有一个关于用JavaSwing处理错误条件的问题

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

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

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

有什么想法吗


益力多

发现异常时,运行:

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    
}

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

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

是的 问题在于你的IO阅读观念 while循环正在读取文件的末尾,以此类推。。 为了防止这种情况,您可以使用缓冲读取器 然后使用这个代码

String line = null
while((line = reader.readLine())!= null) {
// do stuf
}
如果您在处理读取行时遇到此问题 您所需要的只是通过扩展exception类来创建自己的exception类,并在catch块中抛出该异常 将消息设置为自定义异常类后,可以将该消息设置为

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

好的

也许你应该展示一些代码来看看你到底在做什么?一般来说,像这样的东西可能是最好的选择+1不需要循环。这将使情况更加复杂。只是执行我的建议,只有当文件损坏时,线程才会再次调用读取模块。在您访问itI之前,您无法知道文件是否是好文件。我不认为OP具有此功能problem@ewok你深思熟虑的评论极大地扩大了我无知的范围。