我有一个关于使用Java Swing处理错误条件的查询。
我正在使用Netbeans开发一个简单的Java Swing应用程序。它是加载一个文本文件,然后根据文本文件中的数字运行计算。主Swing类包含JFrame和JPanel。
我将文件加载代码作为单独的类文件。它将读取的行数和一个数字列表返回给主Swing应用程序。
我意识到如果文件读取失败(即try - > catch(Exception ex)),整个应用程序将崩溃。处理上述场景导致的错误的最佳方法是什么?也就是说,文件加载代码崩溃,我不希望整个程序崩溃。我希望程序说文件已损坏并等待用户加载新文件。
有什么想法吗?
养乐多
答案 0 :(得分:4)
当您捕获异常时,请运行:
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 :(得分: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
确定
答案 2 :(得分:0)
您只需捕获异常并将条件放入catch块中。如果文件包含应用程序要处理的其他内容,则可以调用将重新处理其他文件的方法。
新文件操作的新进程的主要处理将从catch块开始。因此,通过这种方式,您将使用java抛出的异常以全新的方式重新启动应用程序,而不是将您的应用程序从零级别重新启动。