[HandleError]优于Application_Error的优点

VJA*_*JAI 7 error-handling asp.net-mvc

我知道有很多的问题,在SO有关错误ASP.NET MVC处理.

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

  1. 创建BaseController并覆盖该OnException方法

  2. 使用[HandleError]或自定义异常过滤器.

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

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

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

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

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

bha*_*lin 9

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

另一个好处是[HandleError]仍然可以访问控制器及其附带的所有MVC优点,因此您仍然可以返回View或调用另一个操作.一旦你跌倒了Application_Error,你就输了ControllerContext,除了重定向之外,你没有真正的选择.