【问题标题】:How to exit the try block after breaking in a foreach闯入foreach后如何退出try块
【发布时间】:2019-01-14 22:19:41
【问题描述】:

如果我在其中一个 foreach 中遇到中断,如何退出 Try 块并返回。我能够让中断正常工作,但它随后进入下一个 foreach :D 哈哈 :) 很有趣 :p 我应该尝试在 try 块内返回吗?请帮助更正我的代码。

public void function()
{
  Response() response= new Response();
  try
   {
     1st Foreach ( if condition met, break; )
     2nd Foreach ( if condition met, break; )
     3rd Foreach ( if condition met, break; )
   }
catch( Exception e)
{
}
 return response;
}

【问题讨论】:

  • 如果我正确理解您的问题,也许可以使用return 而不是break
  • @HamletHakobyan:我觉得很好,让我试着告诉你进展如何。
  • 1st Foreach ( if condition met, return response; ) 然后对其他块也这样做。
  • 这可能是goto 正常的罕见情况之一。
  • Re: Q: 我应该尝试在 try 块内返回吗? A: 。如果您从try 内部返回,一切都会按您的预期继续工作。 catch 无关紧要,如果你的return 执行,则没有发生异常。您的 finally 代码将在带有 return 的语句执行之后,但在函数实际返回给调用者之前运行。

标签: c# .net c#-4.0 foreach try-catch


【解决方案1】:

您必须将Function 的返回类型修复为返回Response。是的,直接返回response

    public Response Function()
    {
        var response = new Response();
        try
        {
            foreach (...)
            {
                if (... /* condition met */)
                    return response;
            }
            foreach (...)
            {
                if (... /* condition met */)
                    return response;
            }
            foreach (...)
            {
                if (... /* condition met */)
                    return response;
            }
        }
        catch (Exception ex)
        {
        }
        return response;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多