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

aat*_*tia 5 .net c# iterator yield exception

当其中一个迭代器块内发生异常时,是否有任何方法可以使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;
            }
        }
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 3

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