2014-10-10 65 views
0

我有一個問題,因爲我是一個java初學者,你可能會發現它很愚蠢。如何以友好的方式在java中顯示錯誤消息

我正在寫一個讀取文件的方法,當它不存在時就會顯示錯誤。

File f = new File(FILE_path); 
      if (f.exists() && f.canRead()) { 
       try { 
        //Do something 
       } catch (IOException e) { 
        e.printStackTrace(); 
        LOGGER.error("Error message: " + e.getMessage()); 
       } 
      } else { 
       LOGGER.error("File does not exist or it cannot be read."); 
      } 

但除了顯示紅色錯誤的錯誤也顯示出來,然後程序停止。

Exception in thread "main" java.io.FileNotFoundException: /home/project/file_path (No such file or directory) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:146) 

現在我的問題是,無論如何,程序不凍結在這個級別,我們只顯示友好的消息?或者我們無法避免這種情況,即使我們使用try和catch,這個Exception錯誤總是顯示出來。

+1

你讀過Oracle的教程:[例外 - 捕獲和處理異常(http://docs.oracle.com/javase/tutorial/essential/exceptions/handling html的)? – PakkuDon 2014-10-10 13:41:32

+2

不要打印堆棧跟蹤?如果操作失敗,不要停止程序?目前還不清楚你在問什麼。 – 2014-10-10 13:43:06

+0

爲什麼不明確?!! @DaveNewton – user3409650 2014-10-10 13:44:06

回答

0

,你總是可以使用joptionpanes:

File f = new File(FILE_path); 
     if (f.exists() && f.canRead()) { 
      try { 
       //Do something 
      } catch (IOException e) { 
       JOptionPane.showMessageDialog (null, "Something went Wrong", "Title", JOptionPane.ERROR_MESSAGE); 
       LOGGER.error("Error message: " + e.getMessage()); 
      } 
     } else { 
      LOGGER.error("File does not exist or it cannot be read."); 
     } 
0

is there anyway that the program does not freeze at this level and we show only the friendly message?

是的。您的IDE(日食或其他)可能會自動將e.printStackTrace();放在catch (IOException e)之後,但您不需要這樣做。而更多有經驗的程序員會說這完全沒有必要。

當您在catch中出現Java異常時,您將在異常發生後獲得控制權。您可以在catch之後做任何事情,您可以在程序中的任何其他位置完成任何操作。您不需要打印堆棧跟蹤。

聽起來像是你只是想這樣的:

`catch (IOException e) { 
    LOGGER.error("Error message: " + e.getMessage()); 
} 

編輯,如果這是你在你的catch塊有,那麼這是一個異常後會發生的唯一的事。你的程序不會通過catch塊進行/下移。

相關問題