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

时间:2014-10-24 03:20:57

标签: c#

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

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

3 个答案:

答案 0 :(得分:6)

如果你在工作1中得到一个例外,那么它会在catch块中做任何事情,然后继续工作2(除非你抛出异常或做其他事情来拯救工作1' catch block)。

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

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

答案 1 :(得分:2)

//Ignore the exception
catch { }

//Continue with the next iteration
catch { continue; }

//Exit the loop
catch { break; }

//Exit the method
catch { return; }

所以回答你的问题;

work 1中的异常将基本上忽略该异常并继续运行work 2

work 2中的异常将完全退出该方法。

答案 2 :(得分:1)

  1. 如果Work1中有异常,它将继续Work2
  2. 如果Work2中有异常,它将被捕获并返回foreach的外部函数。
  3. return表示从此函数返回。