2011-08-15 14 views
0

私はいくつかのアイテムのコレクションといくつかの操作を持っています。この操作は、クライアントとサーバー間のリモート呼び出しの一部であり、すべての項目に対して同時に実行する必要があります。サーバ側では、各項目で繰り返し実行され、失敗するか、成功する可能性があります。私は成功したアイテムと失敗したアイテムを知る必要があります。私はこれがむしろ一般的なケースだと思うし、良い解決策がある。どのように私はそれを設計すべきですか?アイテムの収集に関するエラー処理設計の問題

答えて

1

それはあなたが設計要件としてこれに読んでいない場合は、あなたの人生を憎むだろう一度

ですべての項目で実行する必要があります。すべてまたは何もそれを処理する正しい方法です。あなたがするすべてを簡素化します。

これがオプションでない場合は、可能な限り愚かなことをしないでください。 try/catchでそれぞれの呼び出しをラップし、いくつかのレポートを与えます。誰もがレポートを消費することはできないでしょう。それは、まさに正しいことです。

編集:

手の込んだ:バッチ処理すると、レポートエラーにシンプルなロジックを記述することは結構ですが、エラーから回復するためのロジックを書くことは非常に複雑です。私はバッチ処理でシステムが本当にリカバリをうまく処理するのを見たことがありません。私は各項目が完全に独立しているいくつかのコーナーケースがあると確信しています。いずれの時点でどちらか一方が失敗しても問題はありませんが、通常はそうではありません。

一般に、バッチ処理中に発生するエラーは重要ではないと予想しています。これにより、システムはエラーを無視し、エラーの原因となったメッセージが存在しなかったかのように動作し続けることができるはずです。

これらのメッセージが処理されることが本当に重要なのなら、私は絶対にすべてを試すか、何も試してみません。

+0

私の操作は、いくつかの理由で異なる理由で失敗することがあります。この場合、どのようなエラーを返す必要がありますか? 'All or nothing'原則を守れば、最初に失敗したアイテムのエラーを返すはずですか? – ks1322

+0

私はシステムに依存していると思いますが、それは私の予想です。あなたの最初の1つのエラーでは、バッチ内のすべてのアクションもロールバックされると予想されます。 –

関連する問題