2009-10-13 49 views
18

コントローラの動作で例外をキャッチすることはできますか?それを行うより良い方法はありますか?私は実際にコントローラで例外をキャッチし、ユーザーにメッセージを表示するためにTempDataを使用していますが、私はこの方法については気が気になります。私は周りをブラウジングしてきたが、私に合ったものは見つけられていない。ASP.NET MVC例外処理

+0

をこれは古いですが、私はちょうどしたかったです私の投稿をref(** HandleError **の問題)で渡している間に渡してください - http://stackoverflow.com/questions/12183653/mvc-handleerror-filter-didnt-catch-an-exception –

答えて

11

コントローラークラスのHandleError属性を使用して未処理の例外をキャッチすると、自動的にError.aspxビューがSharedフォルダーに返されます。このアプローチの詳細についてなど

あなただけそれが特定の例外タイプに使用することができますので、この属性のオーバーロードは、ありますが、それについてScottGuの記事をチェックアウト:http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx

+0

これは興味深いですが、他の方法で私は標準のビュー( "Index"など)にリダイレクトし、具体的な例外のためのパーソナライズされたメッセージを表示することができます。 –

+0

Error.aspxページは、例外のプロパティを公開するHandleErrorInfoクラスに関連付けられています。パーソナライズされた例外メッセージを送信する場合、そのメッセージをビューにレンダリングすることができます。 Steve Sandersonの本「Pro ASP.NET MVC Framework」では、これを行うためのいくつかの方法と、独自の例外フィルタの作成方法についても説明しています。私はその本を拾うことをお勧めします。 – mkchandler

+0

TempDataの定義を可能にするためにHandleErrorを拡張することがありますか?私はこれについて調査するつもりだと思う。ありがとう... –