我们已经有很多方法在MVC中处理异常,比如用try catch,或者使用Filter,或者通过第三方库比如elmah。但是MVC也提供了一个HandleErrorAttribute去处理异常,如下:
-
[HandleError()] public ActionResult CheckError() { int a = 10; int b = 0; int k = a / b; return View(); }
在web.config文件中,我们在<system.web>中添加如下两行:
-
<customErrors mode ="On" defaultRedirect ="Error.cshtml"> </customErrors>
在shared文件夹下创建一个视图Error.cshtml,然后运行程序,如果运行上面的CheckError()方法,刚创建的Error.cshtml将会显示出来。
还可以根据异常类型的不同跳转到不同的错误界面。
-
[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(); }
可以重写该特性进行错误日志记录!调用方式有两种:1、global全局注册,2、加在控制器或Action上
使用 handleError attribute 有以下局限:
1. 不支持exception记录
2. 无法捕捉到500之外的http exception
3. controller之外抛出的异常无法处理
4. ajax调用出现exception时,会将错误页面内容返回
http://www.cnblogs.com/powertoolsteam/archive/2015/08/13/4667892.html 学习asp.net mvc