0

asp.net 3.5 アプリケーションには n 層アーキテクチャがあり、SQL Server 2008 には C# 言語とデータベースがあると考えてください。

データ アクセス層で、データベースに存在するストアド プロシージャを呼び出したとします。しかし、ストアドプロシージャの実行中に、例外が発生します。(ストアドプロシージャでスローするのが容易になる場合があります)では、アプリケーションはどのようにして例外が正確に何であるかを知るのでしょうか?

ADO.NETには、SQLサーバーによってスローされた例外を理解し、表現する機能がありますか? CLR の例外処理モジュールによって提供される SQLException 名前空間があることは知っています。しかし、私の経験によると、このモジュールは、SQL サーバーで発生した検証例外を表すことができません。誰かが私を修正し、ドットネットアプリケーションからのSQLサーバー例外の処理を適切にガイドできますか? どうすればそれらを処理できますか?常にデータアクセスレイヤーで実行/キャッチブロックに到達するのを待つ必要がありますか?

この質問は繰り返されるかもしれませんが、私の経験を共有したいと思います。

4

1 に答える 1

1

データベースに到達する前に、入力されたすべてのデータを検証および/またはサニタイズする必要があるため、DB が存在しないか、SP にバグがない限り、実際に SQL 例外を取得することはありません。

私の経験から、SQL 例外をキャッチしてログに記録し、それを ApplicationException にラップして、UI にわかりやすいエラーを返します。

于 2011-05-31T12:59:11.710 に答える