在MVC中异常处理的最佳方式是什么(Base_Controller vs CustomHandleErrorAttrib

本文关键字:Base Controller CustomHandleErrorAttrib vs 是什么 方式 MVC 异常处理 最佳 | 更新日期: 2023-09-27 18:06:08

我在三个模型中做MVC异常处理。

 public class CustomHandleErrorAttribute : HandleErrorAttribute
{  
    public override void OnException(ExceptionContext filterContext)
    {
       //logging           
    }
}

 public class Base_Application : System.Web.HttpApplication
{
    protected void Application_Error(object sender, EventArgs e)
    {
        //Logging
    }
}

   public class Base_Controller : Controller
{
    protected override void OnException(ExceptionContext filterContext)
    {
        //Logging;
    }
}

如果我从代码中抛出一个示例异常,它被CustomHandleErrorAttributeBase_Controller捕获。

Base_Application中,我记录的异常与Elmah记录的异常相同。

所以我想知道在所有情况下的最佳方法

在MVC中异常处理的最佳方式是什么(Base_Controller vs CustomHandleErrorAttrib

如果你有一个基础控制器,我建议使用这种方法

public class CustomHandleErrorAttribute : HandleErrorAttribute
{  
    public override void OnException(ExceptionContext filterContext)
    {
       //logging           
    }
}
用自定义属性 装饰基础控制器
[CustomHandleError]
public class Base_Controller : Controller
{
}

所以你也可以重用这个属性,如果你添加一个控制器,不需要一个基础控制器在未来。

还可以通过这篇精彩的文章来决定是否使用基本控制器或ActionFilter。

Application_Error事件可用于捕获未被页级错误处理程序捕获的错误。