5

当一个迭代器块内发生异常时,有什么方法可以让 yield created 迭代器继续到下一个项目?

这目前不起作用:

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

2 回答 2

3

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

于 2010-02-08T17:07:39.473 回答
2

Linq to events,又名 RX,又名 IObservable 明确支持错误:http: //msdn.microsoft.com/en-us/library/dd783449 (VS.100).aspx

查看http://themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.html

于 2010-02-08T17:21:00.960 回答