2017-06-27 6 views
0

私はwcfサービスを持っています。これは、リストに発生したときに自分の例外をコンパイルし続け、最後にこのリストをエラー応答。今、単一のエラーは正常です。私はそれを投げて出力を得ることができます。しかし、エラーとしてリストを投げることは少し挑戦的であることが判明している。List <CustomExceptionObj>例外を一度にスローする方法

- 今まで私が試したことは:AggregateExceptionを使用しています。私は適切な実装のために盗聴を試みました。私はこれらのメソッドを使用して未処理の例外エラーを取得しておく。また

throw new AggregateException("Multiple Errors Occured", ExceptionsList) 

List<CustomExceptionObject> ThrowException(List<CustomExceptionObject> ExceptionList) 
{ 
AggregateException eggExp = new AggregateException(ExceptionList); 
throw new eggExp; 
} 

:これまでのところ、この思い付きました。 洞察力があれば幸いです。

UPDATE:私は入れませんエラーメッセージがある -

An exception of type 'System.AggregateException' occurred in XYZ.dll but was not handled in user code. 

私CustomExceptionObjectの単一のオブジェクトを投げることはSOAPのUIで適切なエラー応答を投げることに注意してください。私はこれらの例外のリストを引き出すことはできません。

+0

「未処理の例外」のメッセージは何ですか? –

+0

どこからでも試しても捕まえていないときにスタックから一番上に来ると処理されません。 – Bond

答えて

0

集約例外は、例外のコレクションである例外をスローする適切な方法です。

throw new AggregateException("Multiple Errors Occured", ExceptionsList) 
+3

これはコメントではありません – BugFinder

+0

実装を分けてください。 – Abhid

+0

私はそれをAbhidの実装で更新しました。集約例外は、例外のコレクションである例外をスローする適切な方法です。 –

0

あなたはこのパターンを使用できます。

public void DoStuff() 
{ 
    var ex = new List<Exception>(); 
    try 
    { 
     DoSomethingThatThrowsFooException(); 
     DoSomethingElseThatThrowsFooException(); 
     DoSomethingThatThrowsBarException(); 
    } 
    cath(FooException e) 
    { 
     ex.Add(e); 
    } 
    if (ex.Count>0) 
     throw new AggregateException(ex); 
} 

BarExceptionがキャッチされず、AggregateExceptionに含まれていないが。最終的に他の場所にキャッチされなければUnhandledExceptionにつながる可能性があります。

+0

私はそのようなことをしているように見えますが、私は例外があります。私は何が間違っている可能性があります。一口... – Abhid

+0

私の推測では、正しいタイプの例外をキャッチしていないということです。 – Hintham

+0

例外のリストを投げたいです。これは私のハンドラメソッドで起こっています。 – Abhid

0

私はハックでこの問題を克服しました。私はそれが最良の方法であるかどうかはわかりません。しかし、私が必要とする望ましい結果に到達するには、これはうまく動作します。

ステップ1: タイプがList<CustomExceptionObject>のクラスを作成します。 STEP 2

今、あなたはダミーFaultReasonFaultCode一部で、完全に、例外をスローし、入ってくるリストで を、このプロパティを設定し、FaultExceptionタイプとしてそれをキャストする必要がある場合。

throw new FaultException<ListOfExceptionsClass>(listofExceptions, new FaultReason("Here is the List of All exceptions"), Faultcode); 

これが発生したすべての例外のきちんとしたリストと応答でFaultオブジェクトを提供します。

+0

似たような問題を抱えている人に役立ちます。 – Abhid

+1

将来ここに来る人にとっては、 'ListOfExceptionClass'は、サーバとクライアントの間の共通ライブラリ、つまり契約で定義されなければならないことに注意してください。サービス情報を公開しているので、サービス例外を返さないのが理想ですが、FaultExceptionは例外をWCFのクライアントに返す正しい方法です。 – ColinM

関連する問題