【问题标题】:Throwing all errors to be handled in Application_Error handler in Global.asax抛出要在 Global.asax 的 Application_Error 处理程序中处理的所有错误
【发布时间】:2012-08-26 16:42:27
【问题描述】:

我想将所有表单错误都扔到事件日志中。为此,我向 Application_Error 处理程序添加了代码,以将错误文本发送到事件日志。我想知道如何在不破坏页面生命周期的正常流程的情况下抛出异常以在 Application_Handler 中捕获。

我尝试简单地抛出 ApplicationException:

throw new ApplicationException(String.Format("Http Request failed. {0}", userStatusErrorMessage));

它的工作原理是将错误详细信息添加到事件日志中,但引发异常的页面在引发错误后没有显示任何内容。它是空白的。

有什么想法吗?非常感激。谢谢你,周末快乐!

【问题讨论】:

  • 在 global.asax 中处理异常意味着你不能继续"而不破坏页面生命周期的正常流程"。当您想要记录异常然后重定向到配置的自定义错误页面时,这种方法很有意义。

标签: asp.net exception error-handling application-error


【解决方案1】:

如果是异常处理后页面可以继续,那么最好远离全局。如果您想记录它,请将其记录在您捕获它的位置(如果您不使用第三方的记录框架,您仍然可以使用静态方法,因此您只需在处理程序中添加一行)。

将 global.asax 留给那些你没有抓住的人,并发送一个错误页面(500 表示“我搞砸了,我会尝试修复它,4xx 范围内的东西”你搞砸了,所以有我对此无能为力”——如果你不知道这是他们的错,那是你的错;如果真的是他们的错,而你不知道,那是你不知道的错。

【讨论】:

    【解决方案2】:

    在 global.asax 中处理异常意味着您无法继续“而不破坏页面生命周期的正常流程”。当您想要记录异常然后重定向到配置的自定义错误页面时,这种方法很有意义。

    如果您只想记录异常然后假装什么都没有发生,您必须捕获异常并在那里调用您的记录方法。但我建议不要这样做,因为用户应该可以看到异常。

    【讨论】:

    • 谢谢蒂姆,我没有使用异常来记录错误。在某些特定情况下,我需要在日志中记录错误。有一组不同的代码向用户显示错误(旧版)。所以,我试图用最少的代码添加到日志中。我想,我必须编写自己的方法将错误发送到事件日志。再次感谢您!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    相关资源
    最近更新 更多