HandleError Attribute

Posted nono

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HandleError Attribute相关的知识,希望对你有一定的参考价值。

我们已经有很多方法在MVC中处理异常,比如用try catch,或者使用Filter,或者通过第三方库比如elmah。但是MVC也提供了一个HandleErrorAttribute去处理异常,如下:

  1. 复制代码
    复制代码
    [HandleError()]
    public ActionResult CheckError()
      {
         int a = 10;
         int b = 0;
         int k = a / b;
         return View();
      }
    复制代码
    复制代码

在web.config文件中,我们在<system.web>中添加如下两行:

  1. <customErrors mode ="On" defaultRedirect ="Error.cshtml">
    </customErrors>

在shared文件夹下创建一个视图Error.cshtml,然后运行程序,如果运行上面的CheckError()方法,刚创建的Error.cshtml将会显示出来。

还可以根据异常类型的不同跳转到不同的错误界面。

  1. 复制代码
    复制代码
    [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

以上是关于HandleError Attribute的主要内容,如果未能解决你的问题,请参考以下文章

项目启动报错Failed to configure a DataSource: 'url' attribute is not specified and no embedde(代码片段

MVC HandleError 属性在控制器上不起作用

MVC3 HandleError 不显示错误页面

AttributeError: ‘str‘ object has no attribute ‘decode‘解决方法

使用全局日志记录时,MVC [HandleError] HandleErrorAttribute 调用了两次

工作流服务中 HandleError 与 ProvideFault 不一致,如何处理?