2012-07-19 80 views
3

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

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

我将文件加载代码作为单独的类文件。它将读取的行数和数字列表返回给主Swing应用程序。我意识到如果文件读取失败(即try - > catch(Exception ex)),整个应用程序将崩溃。处理上述情况导致的错误的最佳方法是什么?也就是说,文件加载代码崩溃,我不希望整个程序崩溃。我想让程序说文件已损坏,并等待用户加载新文件。

有什么想法?

养乐多

+2

也许你应该表现出一定的代码,看看你做的究竟是什么? – 2012-07-19 14:58:27

回答

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  
} 
+2

这种情况大概是最好的选择。 +1 – 2012-07-19 15:00:30

+2

不需要循环。它会更复杂。只是在做我的建议时,线程只会在文件损坏时才会再次调用读取模块。 – GingerHead 2012-07-19 15:05:28

+2

在访问文件之前,您无法知道文件是否为好文件 – GingerHead 2012-11-20 07:35:29

0

你刚才捕获异常,并把情况在catch块。如果文件包含应用程序打算处理的其他内容,则可以调用将重新处理另一个文件的方法。

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

+1

@ewok您的深思熟虑的评论极大地扩大了我的无知范围。 – GingerHead 2013-06-08 10:29:07

1

耶 的问题是你的IO读取概念 while循环读取该文件的末尾等.. 防止u可以使用一个缓冲的读者 并使用此代码

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

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

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

确定

+2

我不认为OP有这个问题 – GingerHead 2012-07-19 15:15:10