5 Stimmen

Gibt es eine Möglichkeit, eine Ausbeute erstellt Iterator weiter zum nächsten Element auf eine Ausnahme zu machen?

Gibt es eine Möglichkeit, eine Ausbeute erstellt Iterator zum nächsten Element fortzusetzen, wenn eine Ausnahme innerhalb einer der Iteratorblöcke auftritt?

Dies funktioniert derzeit nicht:

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

3voto

JaredPar Punkte 699699

Nein, gibt es nicht. Der generierte Code für einen C#-Iterator unterstützt keine Ausnahmen, die ausgelöst werden. Wenn eine Ausnahme ausgelöst wird, wird die MoveNext-Operation nicht abgeschlossen und der nächste Aufruf wird vom Standpunkt des generierten Iterator-Codes aus an der gleichen Stelle wiederholt.

2voto

Rob Fonseca-Ensor Punkte 15345

Linq to events, auch bekannt als RX, auch bekannt als IObservable, bietet explizite Unterstützung für Fehler: http://msdn.microsoft.com/en-us/library/dd783449(VS.100).aspx

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X