[HandleError]优于Application_Error的优点

时间:2012-04-27 16:59:31

标签: asp.net-mvc error-handling

我知道 SO 中有很多关于 ASP.NET MVC中的错误处理的问题。

我知道,大多数人都试图通过三种方式实现目标:

  1. 创建BaseController并覆盖OnException方法

  2. 使用[HandleError]或自定义例外过滤器。

  3. global.asax.cs中的
  4. Application_Error事件

  5. 前两种方法无法处理所有异常,它们只是由动作方法/过滤器引发的,所以显然第三种方法将成为全局异常处理程序的最佳方法。

    我的问题是为什么我应该采用[HandleError]方式?它带来了什么好处,我无法通过Application_Error

    最后,我是否想要在MVC应用程序中认真对待customErrors部分?

    注意:我的要求很平常。每当发生异常时,请记录它并返回自定义错误页面。自定义错误页面可能会更改,具体取决于状态代码。

1 个答案:

答案 0 :(得分:9)

最明显的是[HandleError]允许您在不同的控制器和操作中以不同方式处理错误。它比Application_Error处理程序中的某种switch语句更优雅。

另一个好处是[HandleError]仍然可以访问控制器以及随附的所有MVC优点,因此您仍然可以返回View或调用其他操作。一旦你落到Application_Error,你就失去了ControllerContext,除了重定向之外你还没有剩下的选择。