这是:
// 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) { }
}
(因为在后一种情况下循环仍会继续)
有什么区别(如果有的话)?
答案 0 :(得分:8)
continue
让你跳过当前循环中的剩余参数,然后跳转到下一次迭代。
鉴于我们现在拥有的代码,它没有任何区别。由于if (e.Number == 64) { continue; }
之后没有更多代码。
答案 1 :(得分:1)
两者都相同!!但是在你的代码中使用空catch语句并不是一个好习惯。第一段代码更合适..你可以添加代码来从for循环中出来或者在if (e.Number == 64)
}时记录异常p>
答案 2 :(得分:1)
对于所有实际意图,代码段是等效的。然而,有一个边缘情况,原则上永远不应该发生:如果评估getter e.Number
会发生异常会发生什么?如果发生这种情况,第一个代码就会出现示例将抛出,而第二个示例将继续。
鉴于property getter should never throw an exception,很难想象这是.NET框架类的实际问题。但由于这个原因,这些部分(严格来说)并不相同。