2011-06-29 8 views
1

私は両方ExecuteReaderExecuteNonQueryで、データベースにアクセスするエンタープライズライブラリのDAABを使用しています。問題は、これらのメソッドには例外が文書化されていないということです。どのような例外を捕まえるべきですか?ドキュメント化されていない例外

+0

すべての例外をキャッチする必要があると思うのはなぜか不思議です。スローされる特定の例外は、ほとんどのエラーがデータベースまたはネットワーク(接続など)の例外であるため、データベースプロバイダによって異なります。また、例外のほとんどは、ロギング以外に多くのことを行うことができないと思われ、おそらくエラーがあったことをユーザーに知らせるシステム例外になります。 –

答えて

1

問題は、エンタープライズライブラリよりも低いレベルでスローされます、そしてELは、これらのすべてを文書化することは不可能であろう多くの例外があるということです。

私はあなたがすべての例外をキャッチし、ログに記録する例外処理およびロギングブロックを使用することをお勧め。次に、発生するものを確認し、例外ハンドラの設定を適用するか、または特定のexecptionsを処理するための新しいコードを追加することができます。

+0

問題は、私がすでに「手動で」さまざまな例外をキャッチして処理していることです。新しいハンドリングブロックにそれらを適合させることはできますか? – User

+0

はい、私は手動例外処理から切り替えて、最終的にはエンタープライズライブラリを把握していますが、私はmassivleyが必要とした例外処理コードの量を減らし、コードで発生した例外をはるかにカバーしています。 –

2

私は私が(おそらく多くの)例外のカップルを推測しているMS SQLデータベースのようになりますので、もし開始するには良い場所は、どのデータベースあなたがに接続するだろう推測している、WebTurnerに同意:

  • SqlExceptionが
  • InvalidOperationExceptionが

http://msdn.microsoft.com/en-us/library/9kcbe65k.aspx


EDIT:

は、私はちょうどこの出くわした:How can I determine which exceptions can be thrown by a given method?

それがスローされる例外のリストを明らかに支援するためにリフレクションを使用していますliek見えます。

+0

あなたが行ったことは、1つの下位レベルの操作とサーバーの種類によってどの例外が返されるかがわかります。それは悪いスタートではありませんが、ELの実装全体を調べて、例外を見つけることが必要です。 –

+0

@webturnerに完全に同意しました。これはちょうど始まりますが、確かに完全ではありません。 –

関連する問題