国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

MVC異常處理詳解

2024-07-10 12:54:17
字體:
來源:轉載
供稿:網友

我們在開發過程中,會遇到很多異常的問題,這個時候我們需要觀察是否是多處異常,我們還要根據實際的情況編寫出正常的編程,今天我們就來看看MVC異常處理詳解的方法,一起來看看吧!

一、MVC框架自己的全局異常處理

  在MVC中,框架已經給我們一共了一套全局異常處理的特性類HandleErrorAttribute類。我們可以在MVC中的App_Start文件夾中的FilterConfig.cs文件中找到這么一行代碼

public static void RegisterGlobalFilters(GlobalFilterCollection filters) {    filters.Add(new HandleErrorAttribute());  }

這個就是實例化一個HandleErrorAttribute類,放到過濾器中。然后我們的Views>Shared文件夾中有一個Error.cshtml的頁面,其中,該頁面里的Model的類型為System.Web.Mvc.HandleErrorInfo,這個是MVC框架已經給我寫好了的,我們可以直接拿來用。

在Error.cshtml頁面中,我們可以做進一步處理,來顯示錯誤信息,根據需求來展示錯誤信息。這些錯誤信息都會在System.Web.Mvc.HandleErrorInfo類中的某些屬性中找到的。

例如:一下是Error.cshtml。

我們在Control中,故意寫一個異常出來:

public class HomeController : Controller  {    public ActionResult Index()    {      string i = "12a";      int j = Convert.ToInt32(i);      return View();    }  }

運行一下,我們來看一下結果。

以上就是運行的結果,我們可以看到,System.Web.Mvc.HandleErrorInfo類還是有很多豐富的屬性的,我們可以直接拿來用。

MVC自帶的這套異常處理默認的是處理錯誤碼為500系列的異常,如果是404,就不會走這個了。不過,我們可以通過Web.config文件的設置,來進行處理。看我們如何處理的。

首先,我們先將Error.cshtml頁補充完整,先給他加一個Control,然后,我們再寫一個專門處理404的View和Control。如下

namespace Exception.Controllers{  public class SharedController : Controller  {    // GET: Shares    public ActionResult Error()    {      return View();    }    public ActionResult NotFondError()    {      return View();    }  }}

頁面:

然后我們在瀏覽器地址中寫一個錯誤的地址,看一下結果:

二、重寫MVC中的異常處理

在開發中,我們經常有這么一個需求,我們需要將異常通過文本日志的方式記錄下來并保存,那么MVC自帶的異常處理方式System.Web.Mvc.HandleErrorInfo沒有這么一個功能,那么我們通過重寫的方式來讓它有這個功能。下面,我們來看看如何重寫。

首先我們建一個類,讓這個類繼承System.Web.Mvc.HandleErrorInfo,然后重寫System.Web.Mvc.HandleErrorInfo中的虛方法:OnException方法。

public class CustomHandleErrorAttribute : HandleErrorAttribute  {    public override void OnException(ExceptionContext filterContext)    {      base.OnException(filterContext);      var err = filterContext.Exception.Message;//錯誤內容      //=============================      //將錯誤記錄到日志中      //=============================    }  }

然后,將FilterConfig.cs加入:

public class FilterConfig  {    public static void RegisterGlobalFilters(GlobalFilterCollection filters)    {      filters.Add(new HandleErrorAttribute());      filters.Add(new CustomHandleErrorAttribute());    }  }

這樣,我們就可以完成我們的需求了。

MVC異常處理詳解今天就為大家介紹到這里,隨著互聯網的發展,現在的技術人員的競爭也是很激烈的,我們都要在工作中不斷充實自己,才能讓自己屹立不倒。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永靖县| 威信县| 梅河口市| 雅安市| 景泰县| 宝丰县| 日照市| 博罗县| 施甸县| 汪清县| 武强县| 扎兰屯市| 盖州市| 沁源县| 延吉市| 翁牛特旗| 彭阳县| 监利县| 正定县| 谢通门县| 工布江达县| 台北县| 壤塘县| 岗巴县| 玉田县| 康乐县| 钟山县| 丰镇市| 沁源县| 陕西省| 宜阳县| 安徽省| 五家渠市| 通道| 禹城市| 犍为县| 罗平县| 普陀区| 银川市| 巴中市| 洛阳市|