次のレイヤーを持つ Web アプリケーションがあります。
- クライアント
- WebAPI
- サービス
- リポジトリ
- 芯
ただし、エラー処理をどこに置くべきかわかりません。webAPI コントローラー内では、try/catch ステートメントのみを使用する必要がありますか? サービス/リポジトリ コードでエラーをスローしても問題ありませんか? わかりやすいエラー メッセージ以外のデータをクライアントに渡さないようにしています。
次のレイヤーを持つ Web アプリケーションがあります。
ただし、エラー処理をどこに置くべきかわかりません。webAPI コントローラー内では、try/catch ステートメントのみを使用する必要がありますか? サービス/リポジトリ コードでエラーをスローしても問題ありませんか? わかりやすいエラー メッセージ以外のデータをクライアントに渡さないようにしています。
ビジネス エラーはサービス レイヤーで処理する必要があります (たとえば、ユーザー名が既に存在するなど)。すべてのコントローラー アクションに try/catch ステートメントを配置すると、すぐに面倒になり、コードの繰り返しが発生する可能性があります。custom error handling article
カスタム エラー フィルター (クラスから派生し、メソッドExceptionFilterAttribute
をオーバーライドする) など、Web API でさまざまなエラーを処理する例を提供する を参照してくださいOnException
。
ExceptionFilter または http モジュールによってインターセプトされるカスタム例外タイプを作成できます。HTTP ステータス コードと説明を設定します。オプションで、エラー データを含むシリアル化されたオブジェクトを返すこともできます。
他の例外の種類は、ステータス コード 500 を返します。