为什么我检测到无法到达的代码
本文关键字:代码 检测 为什么 | 更新日期: 2023-09-27 18:06:25
代码:
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(另一个类)上,我看到绿线表示检测到不可达代码。我应该把这行移到throw new Exception行上面吗?
因为一旦你:
throw new Exception("");
该点之后的代码将不再执行。
是的。你要么需要一个return
,要么需要一个throw
,你不能两者都有。
也没有理由使用if
块来测试异常类型是什么,因为您可以有多个catch
语句来做这件事。
您得到警告,因为throw new Exception("");
之后的代码都不会执行。
这掩盖了一个事实,那就是你的异常处理代码,老实说,是一团糟。已经有一些方法可以处理不同类型的异常,而无需捕获广泛的类别并使用is
关键字。通过抛出一个没有详细信息的新异常,你也吞下了一个可能有意义的异常:
你可以考虑用更合适的方式:
catch(WebException ex)
{
wccfg.failedUrls++;
return csFiles
}
catch(Exception ex)
{
wccfg.failedUrls++;
throw;
}
这样如何-它消除了您的错误(因为在Throw之后没有代码可以执行)并减少了重复:
catch(Exception ex)
{
wccfg.failedUrls++;
if (!(ex is WebException))
{
throw new Exception("");
}
}
return csFiles;