Asp.net mvc [HandleError]相对于应用程序错误的优势

Asp.net mvc [HandleError]相对于应用程序错误的优势,asp.net-mvc,error-handling,Asp.net Mvc,Error Handling,我知道在中有很多关于ASP.NET MVC中的错误处理的问题 我明白了,大多数人都试图通过三种方式实现目标: 创建BaseController并重写OnException方法 使用[HandleError]或自定义异常筛选器 global.asax.cs中的应用程序错误 前两种方法不能处理所有异常,它们只处理由操作方法/过滤器引发的异常,因此显然第三种方法将是全局异常处理程序的最佳方法 我的问题是为什么我应该选择[HandleError]方法?我无法通过应用程序\u错误,它带来了什么好处 最后,

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

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

  • 创建
    BaseController
    并重写
    OnException
    方法

  • 使用
    [HandleError]
    或自定义异常筛选器

  • global.asax.cs中的应用程序错误

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

    我的问题是为什么我应该选择
    [HandleError]
    方法?我无法通过
    应用程序\u错误
    ,它带来了什么好处

    最后,我想在MVC应用程序中严肃对待
    customErrors
    部分吗


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

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


    另一个好处是,
    [HandleError]
    仍然可以访问控制器及其附带的所有MVC功能,因此您仍然可以返回
    视图
    或调用其他操作。一旦你陷入
    应用程序错误
    ,你就失去了
    控制器上下文
    ,除了重定向,你真的没有其他选择了。

    我看不出有多少理由有人想在不同的控制器和操作中以不同的方式处理错误。好的,如果我在[HandleError]中执行该逻辑,那么我想在global.asax中执行该逻辑,对吗?移动设备的不同错误页?用户的个性化错误页面?ajax请求的Html片段?断开图像链接的自定义错误图像?访问某些控制器的禁止错误页?不难找到不同处理错误的理由。