2010-12-08 7 views
2

私がどこでどのように私は私が行う必要がアクションのリストから自分のエラーを処理すべき把握しようとしています:それぞれがエラー/例外をスローする可能性のあるアクションのリストでエラーを処理する方法はありますか?

概要:

を私はProcessActionsに一覧と設定オブジェクトを渡していますクラス。 ProcessActionsクラスは文字列のリストを反復処理し、私のファクトリから適切なインスタンス化されたオブジェクトを取得し、各オブジェクトのobject.Execute()を呼び出します。

class ProcessActions : IEngine 
{ 
    public ActionFactory Factory { get; set; } 
    public IList<string> Actions { get; set; } 
    public ISettings Settings { get; set; } 
    public ProcessActions(IList<string> actions, ISettings settings) 
    { 
     Factory = new ActionFactory(); 
     Actions = actions; 
     Settings = settings; 
    } 

    public void Execute() 
    { 
     foreach (var action in Actions) 
     { 
      var task = Factory.CreateInstance(action, Settings); 
      task.Execute(); 
     } 
    } 
} 

もともと私は、私は戻って().Executeと呼ばれるオブジェクトに渡す辞書にすべてのエラーを記録しました。しかし、私は各オブジェクトでスローされた例外を集めて、それらを返すことができるので、このProcessAction(いくつかのタイプのコレクション)でそれらをログに記録できますか?

答えて

2

.NET 4では、基本的にあなたが求めているのはAggregateExceptionです。まるでPLINQと他の並列ライブラリに関連するオブジェクトのために特別に導入されたものであるかのように見えますが、複数のスレッドがすべて例外をスローする可能性があります。他の例外と同様に、スロー可能オブジェクトです。

あなたは並行して実行していないようですので、これは設計されたものではありませんが、使用することもコンセプトに合わせることもできます。参照ページの備考欄を参照してください。