在foreach循环中的catch {}块中返回一个返回值

use*_*806 0 c#

我有一个代码块(见下文).因此,如果我在工作1中得到异常,代码执行将继续在哪里,并且与工作2相同.它会继续工作B还是在foreach-loop中开始新的转向?a中catch {}有没有a有什么区别return

foreach (var item in arr)
{
    //// Work A
    try
    {
       // work 1
    }
    catch { }                                
    try
    {
        // work 2
    }
    catch { return; }                                
    //// work B                                                    
}                            
Run Code Online (Sandbox Code Playgroud)

Tro*_*zzi 6

如果你在工作1中得到一个例外,它将执行catch块中的任何操作,然后继续工作2(除非你抛出异常或做其他事情来挽救工作1的catch块).

return在catch块将退出包含整个方法foreach循环.如果您想退出foreach循环,请使用break;.如果要继续下一个项目,请使用continue;.

有关foreach循环的其他参考:http://msdn.microsoft.com/en-us/library/ttw7t8t6.aspx