7

ASP.NET MVC でのエラー処理についてSOに多くの質問があることは承知しています。

ほとんどの人は、次の 3 つの方法で物事を達成しようとしています。

  1. メソッドを作成しBaseControllerてオーバーライドするOnException

  2. [HandleError]またはカスタムの例外フィルターを使用します。

  3. Application_Errorglobal.asax.cs のイベント

最初の 2 つの方法は、すべての例外を処理することはできず、アクション メソッド/フィルターによって発生した例外のみを処理するため、明らかに 3 番目の方法がグローバル例外ハンドラーの最良のアプローチになります。

私の質問は、なぜ[HandleError]アプローチに行く必要があるのですか? 私が乗り越えることができない、それがもたらす利点は何Application_Errorですか?

最後にcustomErrors、MVC アプリケーションでこのセクションを真剣に考えるべきでしょうか?

注: 私の要件は通常です。例外が発生するたびに、それをログに記録し、カスタム エラー ページを返します。カスタム エラー ページは、ステータス コードによって変わる場合があります。

4

1 に答える 1

9

最も明白なのは[HandleError]、さまざまなコントローラーとアクションで異なる方法でエラーを処理できるようにすることです。Application_Errorハンドラー内のある種の switch ステートメントよりもはるかにエレガントです。

もう 1 つの利点は[HandleError]、コントローラーとそれに付随するすべての MVC 機能に引き続きアクセスできるため、View別のアクションを返したり呼び出したりできることです。に落ちたらApplication_Error負けControllerContextであり、リダイレクト以外に選択肢はありません。

于 2012-04-27T17:09:01.680 に答える