2013-03-13 2 views
0

Я получаю следующее предупреждениеЗатмения

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 к нулю, чтобы избежать ошибок. Однако это вызвало предупреждение.

ответ

1

Если линия

fr = new FileReader(the_file); 

бросает исключение, то fr остается пустой и точно не будет работать в сканере. Вот что такое предупреждение.

Это в основном говорит вам, что печать трассировки стека исключений не является правильной обработкой ошибок. Вместо этого вы должны подумать о возврате метода в случае этого раннего исключения. Или, альтернативно, вы можете поместить блок обработки исключений вокруг всего кода метода, а не только вокруг этой отдельной строки. Тогда предупреждение также исчезнет, ​​поскольку исключение приведет к не выполнению какого-либо дополнительного кода в методе.

+0

Спасибо! Это было очень полезно. –

Смежные вопросы