1 @model HandleErrorInfo SpecialErrorThere was a@Model.Exception.GetType().Namewhile rendering@Model.ControllerName's @Model.ActionName action
运行结果如下:
创建自定义的异常过滤器
如果我们对异常过滤器有特殊的需求,可以通过自定义的异常过滤器来完成,创建自定义异常过滤器必须实现IExceptionFilter接口,该接口代码如下:
Result
MyExectionAttribute:FilterAttribute,IExceptionFilter 2 { OnException(ExceptionContext filterContext) 4 { 5 if(!filterContext.ExceptionHandled&& 6 filterContext.Exception is NullReferenceException) 7 { ); 9 filterContext.ExceptionHandled = true; 10 } 11 } 12 }
然后在项目根目录添加一个名为Content的文件夹,在该文件夹下创建SpeciErrorPage.html文件,当异常被处理时,将以这个错误页面显示个用户。该页面代码如下:
Sorrythis is a Excetption test There was aNullReferenceException while renderingHome's Index action
在控制器中应用MyExection异常过滤器,并主动让其抛出一个空引用异常,以便测试。
HomeController : Controller 2 { 3 [MyExection] 4 public ActionResult Index() 5 { NullReferenceException(); 7 } 8 }
运行结果如下:
总结:本文章简单总结了对过滤器的理解以及如何使用MVC框架内置基本的过滤器和如何自定义过滤器及应用。