.NET中的异常处理和日志记录策略

Bre*_*ogt 14 .net c# asp.net exception-handling asp.net-mvc-3

我正在构建一个具有ASP.NET MVC Web应用程序的多层应用程序.它包含表达层,业务层,数据层等常见内容.如何创建/使用体面的异常处理机制?我阅读了模式和实践,您需要将异常冒泡到各个层.

还记录.记录发生在哪里?在MVC Web应用程序中?

您将如何根据错误类型重定向到各种错误页面?

我会很感激有关这方面的一些反馈,以及一些文章,如果你们有一些.如果有任何样本应用程序使用一个体面的异常哈希和日志记录策略请告诉我:)

Pau*_*ner 10

首先,我建议阅读Eric Lippert撰写的文章" Vexing Exceptions " .这应该给你一些关于异常处理的合理指导(更多关于异常抛出).

当涉及到的异常记录,最简单,最干净的方法是有一个"顶级"例外负责与所有否则未处理的异常处理并将其录制日志进行分析处理.这可以通过HttpApplication.Error您可以通过Global.asax文件挂钩的事件在ASP.NET应用程序中完成.

如果应用程序的一部分被捕获错误(捕获它),并以某种方式处理它,它可能是适当的记录,在这一点上警告或信息,所以可以记录发生的问题,而是系统处理它.尽量避免使用这些填充代码,因为它们很快就会成为维护问题.


stu*_*zzo 6

在我的MVC3应用程序中,我使用ELMAH进行异常处理,如此处所述如何让ELMAH使用ASP.NET MVC [HandleError]属性?,如果我需要记录自定义消息,我使用来自System.Diagnostics的Trace方法,这里有一个有用的链接Overriding System.Diagnostics.Trace.WriteLine来记录到一个文件.

更新现在,您可以使用NuGet打包程序直接在应用程序中设置elmah.http://gregorsuttie.wordpress.com/2011/02/02/elmah-using-nuget-what-they-are-and-why-you-should-use-them-part-1/