7

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

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

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

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

  3. Application_Errorglobal.asax.cs 中的事件

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

我的问题是为什么我应该去[HandleError]接近?它带来了哪些我无法通过的好处Application_Error

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

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

4

1 回答 1

9

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

另一个好处是它[HandleError]仍然可以访问控制器以及它附带的所有 MVC 优点,因此您仍然可以返回 aView或调用另一个操作。一旦你掉到Application_Error,你就输了ControllerContext,除了重定向之外,你真的别无选择。

于 2012-04-27T17:09:01.680 回答