私は、データベース側でいくつかの致命的なエラーを私のアプリケーションに通知するのに、RAISERROR
を使用する3-4のストアドプロシージャを必要に応じて変更できます。これらのストアドプロシージャの一部は、C#側からExecuteNonQuery
で実行され、その他はExecuteReader
で実行されます。現時点では、これらのコマンドをtry { ... } catch (SqlException ThisSqlException) { ... }
ブロックにラップしていますが、この例外は少なくとも2つのシナリオで個別に処理する必要があります。RAISERROR - SqlExceptionとの区別方法
1)接続自体にエラーがあるか、またはタイプミスマッチのパラメータ。
2)RAISERROR
を明示的に使用するたびに発生するエラー。
これはWCFアプリケーションであるため、例外の性質(RAISERROR
コマンドのためかどうかにかかわらず)に基づいて、クライアントアプリケーションに異なるフィードバックを返さなければなりません。どのようにすれば、両方の状況を区別できますか?
+1。私はそれが私が使う方法だと思います。 – User
独自の特定のエラーを認識するためにmsg_idのカスタム番号を指定できますが、データベースのsys.messagesテーブルに最初に登録する必要があり、50000を超える必要があります。http://msdn.microsoft.com/en/ -us/library/ms178592.aspx – stombeur