inheritanceException类以记录所有后续发生的exception

如果我想在整个应用程序中记录所有出现的exception,

我应该inheritanceException类并抛出该类的所有exception,

其构造函数将记录错误详细信息..

或任何想法或建议???

根据应用程序的类型(ASP.NET / Console等),有不同的方法。

对于Windows Forms应用程序,这是要走的路: –

namespace YourNamespace { static class Program { [STAThread] static void Main() { AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) { HandleException(e.Exception); } static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { HandleException((Exception)e.ExceptionObject); } static void HandleException(Exception e) { //Handle the Exception here } } } 

在ASP.NET中,您可以使用Global.asax中的Application_OnError事件或使用您自己的HttpModule连接到Application.OnError事件来捕获所有未处理的exception。

您还可以使用这些第三方exception处理程序之一。

ELMAH支持ASP.NET应用程序

http://code.google.com/p/elmah/

Exceptioneer(我们构建这个 – 只是标志着我对该领域的兴趣)支持ASP.NET,控制台应用程序,Windows窗体应用程序,WPF应用程序等。

http://exceptioneer.com/

我为CodeSmith Tools工作,我强烈建议您查看CodeSmith Insight 。 我们在商业应用中使用它,这是一个梦想成真。 我们之前使用的是Fogbugz,我们评估了其他一些产品。 它允许您序列化整个对象,并发回大量有助于修复错误的额外信息(跟踪,日志,标签,屏幕截图,用户评论等)。 通过在您的指尖提供大量信息以及向遇到错误的用户询问更多信息的能力,这可以缩短解决问题的时间。

在Exception的构造函数中记录exception不是一个好主意。

您使用的是哪种应用程序类型:Web或Windows?

如果您使用的是asp.net,则可以将页面重定向到常见错误页面并从该页面记录错误。 Asp.net还提供了application_error事件,该事件在未处理的exception情况下触发。

通常,您使用try / catch块来处理exception。 您可以在Catch块中记录exception。

 try { //your code } Catch(Exception ex) { Log(ex); } 

您可以使用Microsoft日志记录应用程序块 (或任何其他日志记录API)来记录您的exception。