ASP.Net异常 - 在页面中捕获或在Global.asax中处理(Application_Error)

时间:2011-01-27 18:50:20

标签: asp.net exception error-handling global-asax

在此处寻找最佳实践重点解答。

ASP.Net应用程序的表示层是否应该捕获并处理从业务层抛出的异常,或者是否应允许这些异常消失,在 Global.ascx中统一记录和处理它们/ strong>的 Application_Error 处理程序?

即..

    protected void Application_Error(object sender, EventArgs e)
    {
        logExceptionDetails(Server.GetLastError());
        HttpContext.Current.Server.Transfer("~/Error.aspx");;
    }

由于

2 个答案:

答案 0 :(得分:5)

我对异常的处理方法是让它们发生并使用Elmah进行记录,并使用内置的Custom Error Page机制通知我的用户出现了问题。

所有这一切都可以使用零代码完成(在web.config中配置)。

答案 1 :(得分:0)

好吧,如果你需要真正“处理”异常,那么你的代码中需要try-catch块,可能会发生异常。

您选择的方法取决于您对事件发生的频率。如果事件真的是异常并且是错误(例如意外的文件结束),则使用异常处理会更好,因为在正常情况下执行的代码更少。如果事件经常发生,使用编程方法检查错误会更好。

但是,如果您正在查看已记录“未被捕获”的异常,那么您应该使用像您所示的全局错误事件。这是最佳做法。实际上,如果您将其实现为HttpModule,那么您的异常处理是非侵入式的,可以插入其他应用程序或通过简单地更改web.config文件来删除。

在4GuysFromRolla上查看这篇文章

http://www.4guysfromrolla.com/articles/081209-1.aspx