* コントローラー内での例外処理 [#pea54169]
* コントローラーのOnException()メソッド [#fa1dfa4f]

** コントローラー内でOnException()を自作してOverrideする [#q73ee7fe]
 protected override void OnException(ExceptionContext filterContext)
 {
     if (filterContext.HttpContext.IsCustomErrorEnabled) {
         var vr = new ViewResult();
         vr.ViewName = "~/Views/Shared/MyError.cshtml";
         vr.ViewBag.ControllerName = (string) filterContext.RouteData.Values["controller"];
         vr.ViewBag.ActionName     = (string) filterContext.RouteData.Values["action"];
         vr.ViewBag.Exception      = filterContext.Exception.ToString();
 
         filterContext.Result = vr;
 
         filterContext.ExceptionHandled = true;
     }
 }
- 上のようなOnException()メソッドを各コントローラークラスに記述する。
- もしくは、一括で処理する場合、各コントローラークラスが継承する基底コントローラークラスを作り、その基底クラスで上のメソッドを記述する。

** コントローラー外でのエラーを例外処理する場合はApplication_Errorを使う [#a967f90b]
global.asax.csにApplication_Error()を作成する。


** 参考 [#c7c6ee0e]
- http://prideparrot.com/blog/archive/2012/5/exception_handling_in_asp_net_mvc
- http://stackoverflow.com/questions/10354833/advantages-of-handleerror-over-application-error
- http://miso-soup3.hateblo.jp/entry/20120926/1348657714

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS