我正在构建一个MVC 3.0电子商务网站。我想避免在我的代码中粘贴try-catch块。
问题很简单 - 捕获网站上所有错误的好策略是什么?我想知道所有这些......所以我可以在网站上线后将这个数量计算为0。我计划将每个错误写入记录器并发送电子邮件。
我已经完成了关于在global.asax文件中捕获它的一些阅读...但我也读过它没有得到所有这些。
任何人都有任何建议或能指出我的方向吗?
答案 0 :(得分:24)
解决该问题的MVC方式是过滤器。如果您已经使用MVC3,则全局过滤器适合您。处理错误的过滤器有特殊类型:HandleError
过滤器。 This article描述了很多使用它。
您可以实现自己的过滤器并控制未处理异常的每个方面,例如:
public class HandleExceptionsAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
var expception = filterContext.Exception;
// custom code here..
}
}
最后,如果您想要存储和记录所有未处理的异常,ELMAH即ELMAH.MVC是最佳选择。使用NuGet package安装它,配置它,所有数据都将从以下链接访问:
http://yourapp/admin/elmah/
我的建议是不在Global.asax.cs中使用Application_Error
之类的内容。
答案 1 :(得分:2)
您可以在Global.asax中处理任何抛出的异常。
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
// global handling code goes here
Server.ClearError();
}