Gibt es eine Möglichkeit, einen Ertrag erstellt Iterator mit dem nächsten Element fortsetzen, wenn eine Ausnahme in einem der Iterator-Blöcke auftritt?Gibt es eine Möglichkeit, einen Ertrag erstellt Iterator Weiter zum nächsten Element bei einer Ausnahme?
Dies ist derzeit nicht funktioniert:
Boolean result;
while (true)
{
try
{
result = enumerator.MoveNext(); //Taken from a yield created enumerable
if (!result) break;
}
catch (Exception ex)
{
Console.WriteLine("CATCHED...");
continue;
}
}
Nicht ganz, eine Ausnahme von der enumerator geworfen wird es in der "Enumeration abgeschlossen" setzen Zustand. –
Es gibt also keine Möglichkeit, einen Schritt weiter zu machen? Es sollte sein. – aattia
@aattia, ist die MoveNext-Methode der Weg, um einen Schritt voranzukommen. Der andere Code verhindert dies, indem er eine Ausnahme auslöst. Ein Enumerator, der eine Ausnahme auslöst, ist grundlegend fehlerhaft, da er von 99% der IEnumerable-Verwendungen nicht verwendet werden kann. Es gibt wenig Wert beim Hinzufügen einer Methode, die sagt "Wenn der Iterator bereits gebrochen ist, bitte Schritt trotzdem". – JaredPar