首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >while循环中有2个if的死代码警告

while循环中有2个if的死代码警告
EN

Stack Overflow用户
提问于 2013-03-06 02:51:24
回答 3查看 473关注 0票数 4

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

代码语言:javascript
复制
 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),它应该抛出异常。

但是出了什么问题呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-06 02:53:02

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

票数 14
EN

Stack Overflow用户

发布于 2013-03-06 02:54:20

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

票数 2
EN

Stack Overflow用户

发布于 2013-03-06 02:58:35

首先:

代码语言:javascript
复制
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");

而且你不是在每一行都做这个检查...

此代码不应返回任何死代码...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15231760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档