5

いずれかのイテレータ ブロック内で例外が発生したときに、生成されたイテレータを次のアイテムに継続させる方法はありますか?

これは現在機能していません:

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

2 に答える 2

3

いいえ、ありません。C#イテレータ用に生成されたコードは、スローされる例外をサポートしていません。例外がスローされた場合、MoveNext操作は完了せず、生成されたイテレータコードの観点から、次の呼び出しが同じ場所から再生されます。

于 2010-02-08T17:07:39.473 に答える
2

Linq to events、別名RX、別名IObservableは、エラーを明示的にサポートしています:http://msdn.microsoft.com/en-us/library/dd783449(VS.100) .aspx

http://themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.htmlで確認してください

于 2010-02-08T17:21:00.960 に答える