4

Eclipse が 2 番目の 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)、例外をスローする必要があります。
しかし、何が問題なのですか?

4

3 に答える 3

14

行が null の場合line.matches("@\\d*")、NullPointerException がスローされます。

于 2013-03-05T18:53:01.520 に答える
2

以前に行番号 4 でポインタ 'line' を逆参照したため、無効になっています。これにより、NULL でないことが保証されます。そうしないと、NullPointerException が発生します。

于 2013-03-05T18:54:20.197 に答える
1

初め:

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");

そして、あなたは各行でこのチェックをしていません...

このコードはデッド コードを返すべきではありません...

于 2013-03-05T18:58:34.950 に答える