ac#foreach循环中catch {}和catch {continue;}之间的区别是什么?

Mar*_*nes 6 c#

foreach (Widget item in items)
{
 try
 {
  //do something...
 }
 catch { }
}


foreach (Widget item in items)
{
 try
 {
  //do something...
 }
 catch { continue; }
}
Run Code Online (Sandbox Code Playgroud)

Fre*_*örk 20

catch { continue; }将导致代码在新的迭代开始,catch在循环内的块之后跳过任何代码.


Ant*_*ram 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");
}
Run Code Online (Sandbox Code Playgroud)


Mat*_*hen 8

在这种情况下,没有,因为try是循环复合语句的最后一个语句. continue将始终进入下一次迭代,或者如果条件不再成立则结束循环.