Там какой-либо путь состоит в том, чтобы иметь созданный итератор урожая, продолжаются к следующему объекту, когда исключение происходит в одном из блоков итератора?
Это в настоящее время не работает:
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 не будет завершена, и следующий вызов будет воспроизведен с того же места с точки зрения сгенерированного кода итератора.
Linq к событиям, он же RX, он же IObservable имеет явную поддержку ошибок: http://msdn.microsoft.com/en-us/library/dd783449(VS.100).aspx
Check it out at http://themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.html