2013-03-13 111 views
0

我收到以下警告Eclipse的警告

Null passed for nonnull parameter of new java.util.Scanner(Readable) in  
    model.WordCount.getFile(File). 

爲什麼會出現這一點,我怎麼擺脫這個警告?下面是方法:

/** 
    * Receives and parses input file. 
    * 
    * @param the_file The file to be processed. 
    */ 
    public void getFile(final File the_file) { 
    FileReader fr = null; 
    try { 
     fr = new FileReader(the_file); 
    } catch (final FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    Scanner input = null; 
    String word; 
    input = new Scanner(fr); 
    while (input.hasNext()) { 
     word = input.next(); 
     word = word.toLowerCase(). 
      replaceAll("\\.|\\!|\\,|\\'|\\\"|\\?|\\-|\\(|\\)|\\*|\\$|\\#|\\&|\\~|\\;|\\:", ""); 
     my_first.add(word); 
     setCounter(getCounter() + 1); 
    } 
    input.close(); 
    } 

我不得不初始化FileReader爲null,以避免錯誤。這是觸發警告的原因。

回答

1

如果線路

fr = new FileReader(the_file); 

拋出一個異常,那麼fr保持爲空,將肯定不會在掃描儀的工作。這就是警告的內容。

它基本上告訴你,打印異常的堆棧跟蹤沒有正確的錯誤處理。相反,如果出現早期例外情況,您應該考慮退出該方法。或者,您可能希望將異常處理塊放在方法的所有代碼中,而不是圍繞單一行。然後警告也將消失,因爲例外將導致在方法中不執行任何進一步的代碼。

+0

謝謝!這非常有幫助。 – 2013-03-13 06:19:04