抛出要在Global.asax中的Application_Error处理程序中处理的所有错误

时间:2012-08-31 21:13:39

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

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

我试过简单地抛出ApplicationException:

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

它的工作原理是错误详细信息已添加到事件日志中,但抛出异常的页面在抛出错误后未显示任何内容。这是空白的。

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

如果您只想记录异常,然后就好像什么都没发生一样,那么您必须捕获异常并在那里调用您的记录方法。但我建议反对它,因为用户应该可以看到异常。