在全局ASP.NET应用程序中捕获错误是否有任何问题(例如:Global.asax)?我查看了Good error handling practice这个问题,并没有真正说太多。
我的经验是排除了一些非常具体的情况(例如事务)我们正在编写的大多数ASP.NET应用程序都是
void ButtonEventHandler(object sender, EventArgs e) {
Page.Validate();
if (Page.IsValid) {
//Do a database insert or update thru relevant datalayers.
//If its a transaction then we rollback internally and rethrow
//the exception.
}
}
为什么不只有一个全局异常处理程序?通常(在这一点上)我唯一能做的就是优雅地中止操作并告诉用户再试一次。
答案 0 :(得分:7)
处理未捕获的异常的全局位置将在Global.asax by handling Application_Error
。正如约翰所指出的那样,你应该尽可能地将异常尽可能地接近它们可能发生的地方并做出适当的反应。
答案 1 :(得分:1)
我是这么认为的。您应该捕获特定操作可能期望的异常,尽可能接近它,并且行为恰当,但禁止(或者在它进行一些清理和重新抛出之后跟随它)一个记录异常的全局处理程序一般的500响应是一个很好的默认行为。