在日常開發(fā)中,我們會去捕捉很多的異常,來進(jìn)行處理,通常我們的方法就是,在需要進(jìn)行異常處理的地方加上 try catch 塊,但是,如果需要異常處理的地方很多,那么,就會頻繁的去寫try catch 塊,對于我們天生‘懶惰’ 的程序員來說,總想找一個捷徑。于是,就會有全局異常處理,那么,今天,我們就來看看在MVC中怎么進(jìn)行全局異常處理的。
一、MVC框架自己的全局異常處理
在MVC中,框架已經(jīng)給我們一共了一套全局異常處理的特性類HandleErrorAttribute類。我們可以在MVC中的App_Start文件夾中的FilterConfig.cs文件中找到這么一行代碼
1 public static void RegisterGlobalFilters(GlobalFilterCollection filters)2 {3 filters.Add(new HandleErrorAttribute());4 }
這個就是實例化一個HandleErrorAttribute類,放到過濾器中。然后我們的Views>Shared文件夾中有一個Error.cshtml的頁面,其中,該頁面里的Model的類型為System.Web.Mvc.HandleErrorInfo,這個是MVC框架已經(jīng)給我寫好了的,我們可以直接拿來用。
在Error.cshtml頁面中,我們可以做進(jìn)一步處理,來顯示錯誤信息,根據(jù)需求來展示錯誤信息。這些錯誤信息都會在System.Web.Mvc.HandleErrorInfo類中的某些屬性中找到的。
例如:一下是Error.cshtml。
我們在Control中,故意寫一個異常出來:
1 public class HomeController : Controller2 {3 public ActionResult&nbs