while 循环中的死代码警告,带有 2 个 if's



我不明白为什么Eclipse对第二个if条件中的代码给出了死代码警告:

 boolean frameErreicht = false;
  while (!frameErreicht) {
        String line = reader.readLine();
        if (line.matches("@\d*")) {
            reader.mark(reader.getLineNumber() - 1);
            reader.setLineNumber(reader.getLineNumber() - 1);
            frameErreicht = true;
        }
        if (line == null)
            throw new IOException("Keine Angaben zu Frames im Eingabestrom");
    }

LinenumberReader的readLine()方法的jdoc说,如果到达流的结尾,它将返回null,所以如果在整个文本中没有找到匹配(line == null),它应该抛出异常。
但怎么了?

如果line为null, line.matches("@\d*")将抛出NullPointerException

它已经死了,因为你之前在第4行取消了指针'line'的引用,这保证了它不是NULL,否则你会得到NullPointerException

First:

boolean found = false;
String line = null;
while ((line=reader.readLine())!=null) {
    if (line.matches("@\d*")) {
        reader.mark(reader.getLineNumber() - 1);
        reader.setLineNumber(reader.getLineNumber() - 1);
        found=true;
        break;
    }
}
if(!found) throw new IOException("Keine Angaben zu Frames im Eingabestrom");

你不是每一行都做这个检查…

相关内容

  • 没有找到相关文章

最新更新