在catch block中继续
本文关键字:继续 block catch | 更新日期: 2023-09-27 18:05:22
这是:
// retry
for (int i = 0; i < length; ++i)
{
try
{
sqlCommand.ExecuteNonQuery();
}
catch (SqlException e)
{
if (e.Number == 64)
{
continue;
}
}
}
相当于:// retry
for (int i = 0; i < length; ++i)
{
try
{
sqlCommand.ExecuteNonQuery();
}
catch (SqlException e) { }
}
(因为后一种情况下循环将继续)
有什么区别(如果有的话)?
continue
允许您跳过当前循环中的其余语句,并跳转到下一次迭代。
对于我们现在拥有的代码,它没有什么区别。由于if (e.Number == 64) { continue; }
之后没有更多的代码。
对于所有实际意图,代码段是等效的。然而,有一个边缘情况,原则上不应该发生:如果getter e.Number
被求值并抛出异常会发生什么?如果发生这种情况,第一个示例中的代码将抛出,而第二个示例将继续。
考虑到属性getter不应该抛出异常,很难想象这是。net框架类的一个实际问题。但是由于这个原因,这些片段(严格来说)是不相同的。
两者完全相同!!但是在你的代码中有空的catch语句不是一个好的做法。第一部分代码更合适。如果if (e.Number == 64)