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;
  }
}

在第二个 wccfg(another class) 上,我看到绿线说检测到无法访问的代码。我应该将此行移到 throw new Exception 行上方吗?

4

3 回答 3

8

因为一旦你:

throw new Exception("");

在那之后没有其他代码将被执行。

所以是的。你要么需要 areturn要么 a throw,你不能同时拥有。

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

于 2013-03-28T16:23:49.393 回答
4

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

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

您可能需要考虑更合适的东西,例如:

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 回答