0

コード:

catch(Exception ex)
{
  if (ex is WebException)
  {
    wccfg.failedUrls++; //  i think you forgot this
    return csFiles;
  }
  else
  {
    throw new Exception("");
    wccfg.failedUrls++;
    return csFiles;
  }
}

2 番目の wccfg (別のクラス) で、到達不能なコードが検出されたことを示す緑色の行が表示されます。この行を throw new Exception 行の上に移動する必要がありますか?

4

3 に答える 3

8

なぜなら、あなたが一度:

throw new Exception("");

それ以降のコードは実行されません。

あ、はい。returnまたは のいずれかが必要ですthrow。両方を持つことはできません。

複数のステートメントを使用ifできるため、ブロックを使用して例外タイプが何であるかをテストする理由もありません。catch

于 2013-03-28T16:23:49.393 に答える
4

以降のコードは実行されないため、警告が表示throw new Exception("");されます。

それは、あなたの例外処理コードが、正直なところ、ごちゃごちゃしているという事実とは異なります。is広範なカテゴリをキャッチしてキーワードを使用せずに、さまざまな種類の例外を処理する方法が既にあります。また、詳細なしで新しい Exception をスローすることにより、潜在的に意味のある例外を飲み込んでいます。

次のようなより適切なものを検討することをお勧めします。

catch(WebException ex)
{
    wccfg.failedUrls++;
    return csFiles
}
catch(Exception ex)
{
    wccfg.failedUrls++;
    throw;
}
于 2013-03-28T16:25:09.540 に答える
0

これはどうですか-エラーを排除し(Throwの後にコードを実行できないため)、重複を減らします:

catch(Exception ex)
{
  wccfg.failedUrls++;

  if (!(ex is WebException))
  {
    throw new Exception("");
  }
}

return csFiles;
于 2013-03-28T16:31:35.657 に答える