HandleError Attribute

咱們已經有不少方法在MVC中處理異常,好比用try catch,或者使用Filter,或者經過第三方庫好比elmah。可是MVC也提供了一個HandleErrorAttribute去處理異常,以下:html

  1. 複製代碼
    複製代碼
    [HandleError()]
    public ActionResult CheckError()
      {
         int a = 10;
         int b = 0;
         int k = a / b;
         return View();
      }
    複製代碼
    複製代碼

在web.config文件中,咱們在<system.web>中添加以下兩行:web

  1. <customErrors mode ="On" defaultRedirect ="Error.cshtml">
    </customErrors>

在shared文件夾下建立一個視圖Error.cshtml,而後運行程序,若是運行上面的CheckError()方法,剛建立的Error.cshtml將會顯示出來。ajax

還能夠根據異常類型的不一樣跳轉到不一樣的錯誤界面。mvc

  1. 複製代碼
    複製代碼
    [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();
           }
    複製代碼
    複製代碼

能夠重寫該特性進行錯誤日誌記錄!調用方式有兩種:一、global全局註冊,二、加在控制器或Action上

使用 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學習

相關文章
相關標籤/搜索