在foreach循环中的catch{}块中放入一个return

本文关键字:return 一个 循环 foreach catch | 更新日期: 2023-09-27 18:27:35

我有一个代码块(见下文)。因此,如果我在工作1中遇到异常,代码将在哪里继续执行,工作2也是如此。它会继续工作B还是在foreach-循环中开始新的转折?有和没有returncatch {}有什么区别?

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

在foreach循环中的catch{}块中放入一个return

如果您在工作1中遇到异常,它将执行catch块中的任何操作,然后继续工作2(除非您抛出异常或在工作1的catch块中执行其他操作)。

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

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

//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中的异常将完全退出该方法。

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