2012-07-19 73 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