私は最近、小さなタスクの配列を繰り返し実行する比較的複雑なアプリケーションをC#で書いています。最初にアプリケーションを起動したときに、入力したコードの多くが反復的であることがわかったので、必要に応じて呼び出すことができる別のヘルパークラスにアプリのロジックの大部分をカプセル化し始めました。C#アプリケーションで例外を処理する場所はどこですか?
言うまでもなく、私のアプリのサイズ(およびコードの量)は半分にカットされていました。しかし、私が進んでいくうちに、私のアプリケーションでは、繰り返し可能なように見えて、改善できるように見えた何かに気付きました。
私のヘルパークラスのほとんどのメソッドは、HttpWebRequest
を作成しているか、ファイルに対して保存/削除操作を行っています。十分なスペースがないなどの理由で、コールが完了しない、またはファイルを保存できない可能性を処理する必要があると述べています。私が実行している問題は、メソッドの1つを呼び出すたびにtry/catchステートメントを書き続ける必要があることです。その上に、私はエラーメッセージを再入力する必要があります(または、最終的にステータスメッセージ。私はそれが成功したときも知りたいです)。
だからここに私が入力しているかのスニペットのようなものだ:
try
{
ItemManager.SaveTextPost(myPostItem);
}
// Majority of the time there is more than one catch!
catch
{
//^^^Not to mention that I have to handle multiple types of exceptions
//in order to log them correctly(more catches..ugh!)
MessageBox.Show("There was an error saving the post.");
//Perform logging here as well
}
を私がこれまでに締結したものからは、次のとおりです。
- 私にこれはやり過ぎ50の上にこれを記述することさ私のアプリの時間。 私はこれをヘルパークラスに含める必要があり、 のキャッチセットを含める必要があります。
- しかし、どのように結果を知ることができますか?私はおそらく、エラー/成功メッセージを含む 文字列を返すことを考えていました。
- 実際には、これらのタイプのメソッドでは、try/catchブロックでヘルパーメソッドを呼び出すメソッドを呼び出すメソッドは必要ありません。
このアプローチは正しいですか?これを行う別の方法がありますか?呼び出しメソッドでtry/catchを使用する必要がありますか?このような私の最初のショットは、このシナリオを扱った他の人が何を言っているか聞いてみたいと思っています。
同様の質問が最近尋ねられました:http://stackoverflow.com/questions/8156530/exception-handling-in-method-definition-or-call/8156574#8156574 – Tudor