c# - 有什么方法可以使 yield created Iterator 在出现异常时继续到下一个项目?

标签 c# .net exception yield iterator

当其中一个迭代器 block 内发生异常时,有没有办法让 yield 创建的迭代器继续到下一个项目?

这目前不起作用:

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

最佳答案

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

关于c# - 有什么方法可以使 yield created Iterator 在出现异常时继续到下一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2223342/

相关文章:

c# - Application.Run( ) 做什么?

java - 使用 JAVA 将用户添加到 LDAP。命名.InvalidNameException : Invalid Name

c# - MySQL 本地/在线服务器不会响应 C#/.NET

c# - 无法捕获的 AccessViolationException

c# - Microsoft SQL Server 如何将数据从一个表复制到另一个表

c# - 将 partition by 上的 first_value 翻译成 linq

.net - NUnit 与手动单元测试

c# - 哪些场景会触发 Application_End 事件?

c# - ExecuteScalar "Specified cast is not valid"异常

python - 捕获内置异常(而不是自定义异常)