咱們已經有不少方法在MVC中處理異常,好比用try catch,或者使用Filter,或者經過第三方庫好比elmah。可是MVC也提供了一個HandleErrorAttribute去處理異常,以下:html
[HandleError()] public ActionResult CheckError() { int a = 10; int b = 0; int k = a / b; return View(); }
在web.config文件中,咱們在<system.web>中添加以下兩行:web
<customErrors mode ="On" defaultRedirect ="Error.cshtml"> </customErrors>
在shared文件夾下建立一個視圖Error.cshtml,而後運行程序,若是運行上面的CheckError()方法,剛建立的Error.cshtml將會顯示出來。ajax
還能夠根據異常類型的不一樣跳轉到不一樣的錯誤界面。mvc
[HandleError(ExceptionType=typeof(DivideByZeroException),View="嘗試除以0的View")] [HandleError(ExceptionType = typeof(NullReferenceException), View = "引用null對象的View")] public ActionResult CheckError() { int a = 10; int b = 0; int k = a / b; return View(); }
使用 handleError attribute 有如下侷限: asp.net
1. 不支持exception記錄
2. 沒法捕捉到500以外的http exception
3. controller以外拋出的異常沒法處理
4. ajax調用出現exception時,會將錯誤頁面內容返回ide
http://www.cnblogs.com/powertoolsteam/archive/2015/08/13/4667892.html 學習asp.net mvc學習