我不明白为什么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),它应该抛出异常。
但是出了什么问题呢?
发布于 2013-03-06 02:53:02
如果line为null,line.matches("@\\d*")将抛出NullPointerException
发布于 2013-03-06 02:54:20
它是死的,因为你之前在第4行中取消了对指针' line‘的引用,这保证了它不是NULL,否则你会得到NullPointerException。
发布于 2013-03-06 02:58:35
首先:
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");而且你不是在每一行都做这个检查...
此代码不应返回任何死代码...
https://stackoverflow.com/questions/15231760
复制相似问题