¿Hay alguna forma de hacer que un iterador creado por rendimiento continúe con el siguiente elemento cuando se produce una excepción dentro de uno de los bloques del iterador?¿Hay alguna manera de hacer un rendimiento creado Iterador Continuar con el siguiente elemento después de una excepción?
Esto no está actualmente trabajando:
Boolean result;
while (true)
{
try
{
result = enumerator.MoveNext(); //Taken from a yield created enumerable
if (!result) break;
}
catch (Exception ex)
{
Console.WriteLine("CATCHED...");
continue;
}
}
No del todo, una excepción lanzada por el empadronador se puso en la "enumeración completa" estado. –
¿Entonces no hay forma de avanzar un paso? Debería haber. – aattia
@aattia, el método MoveNext es la manera de avanzar un paso. El otro código evita que esto suceda al lanzar una excepción. Un enumerador que arroja una excepción está fundamentalmente roto ya que no es utilizable por el 99% de los usos de IEnumerable. Tiene poco valor agregar un método que dice "si el iterador ya está roto, por favor pise de todos modos". – JaredPar