2011-01-27 57 views
1

在此寻找最佳实践,并解释说明。ASP.Net异常 - 在Global.asax中捕获页面或句柄(Application_Error)

应在ASP.Net应用程序捕获的表示层和处理从业务层抛出的异常,或应这些被允许泡出来的,他们都可以被记录,并在Global.ascx统一处理“ s Application_Error处理程序?

即..

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

感谢

回答

5

我对于异常的办法是让他们发生与Elmah记录它们,并使用内置的Custom Error Page机制来通知我的用户的东西出错。

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

+2

ELMAH为您提供额外的(银河)功能,然后连接任意数量的消息接收器,如电子邮件,推特等,除了实际的日志记录之外。严重的是,花几分钟时间查看Elmah:http://code.google.com/p/elmah/ – 2011-01-27 20:18:59

0

好吧,如果你需要忠实地“处理”的例外,那么你需要的try-catch在你的代码块,其中的例外可能发生。

您选择的方法取决于您期望事件发生的频率。如果事件真的非常特殊并且是错误的(例如意外的文件结束),那么使用异常处理更好,因为在正常情况下执行的代码更少。如果事件经常发生,使用编程方法检查错误更好。但是,如果您正在查看已被“未捕获”的日志记录异常,那么您应该使用像您所示的Global's Error事件。这是最佳实践。事实上,如果您将它作为HttpModule实现,那么您的异常处理是非侵入式的,可以插入其他应用程序或通过简单地更改web.config文件来删除。

看看这篇文章4GuysFromRolla

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

相关问题