有什么方法可以让创建的迭代器在出现异常时继续执行下一项吗?

发布于 2024-08-20 20:41:51 字数 458 浏览 8 评论 0原文

当其中一个迭代器块内发生异常时,是否有任何方法可以让创建的迭代器继续执行下一项?

目前这不起作用:

        Boolean result;
        while (true)
        {
            try
            {
               result =  enumerator.MoveNext(); //Taken from a yield created enumerable
               if (!result) break;
            }
            catch (Exception ex)
            {
                Console.WriteLine("CATCHED...");
                continue;
            }
        }

Is there any way to have a yield created iterator continue to the next item when an exception occurs inside one of the iterator blocks?

This is currently not working:

        Boolean result;
        while (true)
        {
            try
            {
               result =  enumerator.MoveNext(); //Taken from a yield created enumerable
               if (!result) break;
            }
            catch (Exception ex)
            {
                Console.WriteLine("CATCHED...");
                continue;
            }
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

十秒萌定你 2024-08-27 20:41:51

不,没有。 C# 迭代器生成的代码不支持引发异常。如果引发异常,则 MoveNext 操作将无法完成,并且从生成的迭代器代码的角度来看,下一个调用将从同一位置重播。

No there is not. The generated code for a C# iterator does not support exceptions being thrown. If an exception is thrown the MoveNext operation will not complete and the next call will replay from the same place from the standpoint of the generated iterator code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文