2017-01-31 8 views
2

私のAPI用のレガシーサービスをラップしようとしています。サービスでCRUD操作を行うドメインモデルは、ArgumentExceptionまたはAggregateExceptionのような明示的な標準例外をスローし、失敗したストアドプロシージャを暗黙的にスローします。私はすべての例外をラッピングすることによってデータベースやプログラムに関する情報を公開したくないので、過去の開発者が投げたものを捕捉したいだけです。管理対象コードで明示的な例外のみを検出する

ArgumentException暗黙のうちに失敗したストアドプロシージャからスローされるのを避けながら、明示的にthrow new ArgumentException()をキャプチャする最善の方法はありますか?

+1

質問から、私はあなたが管理しているプロジェクトコード内で発生するすべてのArgumentExceptionsを探していると推測します。失敗したSQL呼び出しからのものです。私は他の人たちが出てくるものを見たいと思っていますが、例外内でコールスタックを調べたり、厄介な構文解析をしたりすることが不十分であるという確かな方法はありません。 – Theo

+0

@Theoこれはまさに私が探しているものです。 – Richard

+0

SqlExceptionとして最初にキャッチした後にArgumentExceptionsをキャッチできませんか?ちょうど刺す。 – GibralterTop

答えて

1

おそらく気付いたように、明示的なスローだけをキャッチする方法はありません。
問題を解決する最も安全な方法は、オリジナルから継承するカスタム例外をスローすることです。
明示的なスローを処理でき、既存のtry/catchステートメントを破ることはできません

関連する問題