在此处寻找最佳实践重点解答。
ASP.Net应用程序的表示层是否应该捕获并处理从业务层抛出的异常,或者是否应允许这些异常消失,在 Global.ascx中统一记录和处理它们/ strong>的 Application_Error 处理程序?
即..
protected void Application_Error(object sender, EventArgs e)
{
logExceptionDetails(Server.GetLastError());
HttpContext.Current.Server.Transfer("~/Error.aspx");;
}
由于
答案 0 :(得分:5)
我对异常的处理方法是让它们发生并使用Elmah进行记录,并使用内置的Custom Error Page机制通知我的用户出现了问题。
所有这一切都可以使用零代码完成(在web.config中配置)。
答案 1 :(得分:0)
好吧,如果你需要真正“处理”异常,那么你的代码中需要try-catch块,可能会发生异常。
您选择的方法取决于您对事件发生的频率。如果事件真的是异常并且是错误(例如意外的文件结束),则使用异常处理会更好,因为在正常情况下执行的代码更少。如果事件经常发生,使用编程方法检查错误会更好。
但是,如果您正在查看已记录“未被捕获”的异常,那么您应该使用像您所示的全局错误事件。这是最佳做法。实际上,如果您将其实现为HttpModule,那么您的异常处理是非侵入式的,可以插入其他应用程序或通过简单地更改web.config文件来删除。
在4GuysFromRolla上查看这篇文章