咱们已经有不少方法在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学习