是否有任何方法可以创建一个yield Iterator在异常时继续下一个项目?

时间:2010-02-08 17:03:10

标签: c# .net exception yield iterator

当其中一个迭代器块内发生异常时,是否有任何方法可以将yield iterator继续到下一个项目?

目前无效:

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)