foreach (Widget item in items)
{
try
{
//do something...
}
catch { }
}
foreach (Widget item in items)
{
try
{
//do something...
}
catch { continue; }
}
答案 0 :(得分:20)
catch { continue; }
将导致代码在新的迭代中开始,在循环中的catch
块之后跳过任何代码。
答案 1 :(得分:9)
其他答案会告诉您在给定的代码段中会发生什么。使用catch子句是循环中的最终代码,没有功能差异。如果您的代码遵循catch子句,那么没有“continue”的版本将执行该代码。 continue
是break
的继兄,它会使循环体的其余部分短路。使用continue
,它会跳到下一次迭代,而break
完全退出循环。无论如何,要为自己展示你的两种行为。
for (int i = 0; i < 10; i++)
{
try
{
throw new Exception();
}
catch
{
}
Console.WriteLine("I'm after the exception");
}
for (int i = 0; i < 10; i++)
{
try
{
throw new Exception();
}
catch
{
continue;
}
Console.WriteLine("this code here is never called");
}
答案 2 :(得分:8)
在这种情况下,没有,因为try是循环复合语句的最后一个语句。 continue
将始终进入下一次迭代,或者如果条件不再成立则结束循环。
答案 3 :(得分:3)
编译器将忽略它。这是从Reflector中获取的。
public static void Main(string[] arguments)
{
foreach (int item in new int[] { 1, 2, 3 })
{
try
{
}
catch
{
}
}
foreach (int item in new int[] { 1, 2, 3 })
{
try
{
}
catch
{
}
}
}
答案 4 :(得分:0)
如果你的样本是逐字逐句的,那么,我会说“没有区别”!
但是,如果您在捕获之后要执行声明,则完全是另一种游戏!
在{} {}之后,catch { continue; }
会跳过任何内容!
catch{}
仍然会在catch块后执行语句!!