为什么我检测到无法访问的代码?

时间:2013-03-28 16:22:45

标签: c#

代码:

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

在第二个wccfg(另一个类)上,我看到绿线表示检测到无法访问的代码。 我应该将这一行移到抛出新的异常行吗?

3 个答案:

答案 0 :(得分:8)

因为一旦你:

throw new Exception("");

此点之后没有其他代码会被执行。

是的。您需要returnthrow,您不能同时拥有这两者。

也没有理由测试Exception类型使用if块的内容,因为您可以使用多个catch语句来执行此操作。

答案 1 :(得分:4)

您收到警告,因为throw new Exception("");之后的所有代码都不会被执行。

这掩盖了这样一个事实:你的异常处理代码,老实说,是一团糟。已经存在处理不同类型的异常的方法,但没有捕获广泛的类别并使用is关键字。您还通过抛出一个没有详细信息的新异常来吞噬一个可能有意义的异常:

您可能需要考虑更合适的内容,例如:

catch(WebException ex)
{
    wccfg.failedUrls++;
    return csFiles
}
catch(Exception ex)
{
    wccfg.failedUrls++;
    throw;
}

答案 2 :(得分:0)

这个怎么样 - 它消除了你的错误(因为没有代码可以在Throw之后执行)并减少重复:

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

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

return csFiles;