ASP.NET MVC 異常Exception攔截器Fillter

異常信息的處理在程序中很是重要, 在asp.net mvc中提供異常屬性攔截器進行對異常信息的處理,異常攔截器也沒有什麼的,只是寫一個類,繼承另外一個類(System.Web.Mvc.FilterAttribute)和一個接口(System.Web.Mvc.IExceptionFilter),實現接口裏面OnException方法。mvc

代碼實例:asp.net

異常攔截器類:測試

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 
 6 namespace AttributeDemo.Common
 7 {
 8     /// <summary>
 9     /// 異常信息攔截器
10     /// </summary>
11     public class ExceptionFillterAttribute : System.Web.Mvc.FilterAttribute, System.Web.Mvc.IExceptionFilter
12     {
13         #region 請求的action發生異常時會執行此方法
14         /// <summary>
15         /// 請求的action發生異常時會執行此方法
16         /// </summary>
17         /// <param name="filterContext"></param>
18         void System.Web.Mvc.IExceptionFilter.OnException(System.Web.Mvc.ExceptionContext filterContext)
19         {
20             //在這裏你能夠記錄發生異常時你要幹什麼,比例寫日誌
21             string message = filterContext.Exception.Message;
22             filterContext.Controller.ViewData["ErrorMessage"] = message;
23 
24             //返回的結果給客戶端
25             filterContext.Result = new System.Web.Mvc.ContentResult()
26             {
27                 Content = "出錯了:)",
28                 ContentEncoding = System.Text.Encoding.UTF8
29             };
30 
31 
32             filterContext.ExceptionHandled = true;  //告訴系統,這個異常已經處理了,不用再處理
33 
34             //filterContext.ExceptionHandled = false;  //告訴系統,這個異常沒有處理,須要再處理 
35         }
36         #endregion
37 
38 
39     }
40 }

控制器類:spa

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace AttributeDemo.Controllers
 8 {
 9     /// <summary>
10     /// 測試異常攔截器
11     /// </summary>
12     [AttributeDemo.Common.ExceptionFillter]   //這個異常攔截屬性寫在這裏表示對該控制器全部的action的異常都進行攔截
13     public class ExceptionFillterTestController : Controller
14     {
15         //
16         // GET: /ExceptionFillter/
17 
18         /// <summary>
19         /// 測試異常攔截
20         /// </summary>
21         /// <returns></returns>
22         //[AttributeDemo.Common.ExceptionFillter]  //這個異常攔截屬性寫在這裏表示只對該action的異常信息進行攔截
23         public ActionResult TestExceptionFillter()
24         {
25             int i = int.Parse("sd");  //這裏故意引起異常進行測試
26             return View();
27         }
28 
29         public ActionResult Index()
30         {
31             return View();
32         }
33 
34     }
35 }

當請求action名稱爲TestExceptionFillter是時,action方法引起了異常,就會執行異常攔截類裏面的OnException方法進行處理,處理結果請看下圖:.net

相關文章
相關標籤/搜索