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为 null 以避免错误。这就是触发警告的原因。

4

1 回答 1

1

如果线

fr = new FileReader(the_file);

抛出异常,然后fr保持 null 并且绝对不会在 Scanner 中工作。这就是警告的内容。

它基本上告诉您打印异常的堆栈跟踪不是正确的错误处理。相反,您应该考虑在出现早期异常的情况下退出该方法。或者,您可能希望将异常处理块放置在方法的所有代码周围,而不仅仅是围绕那一行。然后警告也会消失,因为异常会导致方法中不再执行任何代码。

于 2013-03-13T06:16:35.583 回答