2016-10-31 38 views
-1

我目前正在處理將文件內容轉換爲字符串的簡單方法。我看到幾個主題涵蓋了這個問題的一些細節(here)。不過,我可以使用前面鏈接答案中提到的try catch或return do_nothing。代碼:
這是避免空值返回的好方法嗎?

public static String getStringFromFile(String path) throws EmptyFileException { 
    String data =null; 

    try { 
     BufferedReader reader = new BufferedReader(new FileReader(path)); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      data += line +"\n"; 
     } 
     if (data == null) { 
      throw new EmptyFileException(); 
     } 

    } 

    catch (FileNotFoundException ex) { 
      showExceptionMessage("File not found"); 
    } 
    catch (IOException ex) { 
     showExceptionMessage("Can't read the file"); 
    } 

    return(data); 

} 

private static void showExceptionMessage(String message) { 
    JOptionPane.showMessageDialog(null, message, "ERROR", JOptionPane.ERROR_MESSAGE); 
} 

那麼,什麼是「更好」拋出一個異常,如果該文件是空的或只使用返回doNothing()(分別爲doNothing是什麼也不做的功能,是有道理的右HAHAH?)。

+0

從應用程序的角度來看,處理缺少的文件,空文件和錯誤讀取可以作爲一般「無信息發現」情況那會導致「無所事事」的流程?或者換一種說法,如果在文件中找到它,你是否只想顯示一條消息,否則不顯示任何內容(即使輸入錯誤來從文件中獲取消息)? – Bohemian

回答

0

這是一個避免空迴歸的好方法嗎?

是的,如果可以,總是返回「現有」對象而不是null。空對象模式是一個很好的方法來避免這種情況。

那麼,什麼是「更好」拋出一個異常,如果該文件是空的 或者只是使用返回doNothing()

在你的情況下拋出異常是矯枉過正我。當你不期望特定行爲時,你應該拋出異常。看看FileNotFoundException。您總是期望該文件存在,因此在找不到該文件時拋出異常是一個很好的選擇。

因此,如上所述null是壞的,那麼爲什麼你不能返回空字符串? :)在這種情況下,它將像空位對象模式一樣工作,如佔位符:)

+0

我在想如果返回一個空字符串會很奇怪,因爲用戶/程序員會希望該文件至少包含某些內容(否則將數據轉換爲字符串沒用)? – Bioinformatician

相關問題