2009-11-19 52 views
2

的所有后续出现。如果我想记录异常的所有出现在我的应用程序,到目前为止,继承Exception类登录异常

我应该继承Exception类并抛出该类的所有的异常,

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

或任何想法或建议???

回答

6

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

对于Windows窗体应用程序,这是要走的路: -

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事件或挂接到应用程序捕捉所有未处理的异常.OnError事件与您自己的HttpModule。

您也可以使用这些第三方异常处理程序之一。

ELMAH支持ASP.NET应用程序

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

Exceptioneer(我们建立这个 - 只是标记了我的领域的兴趣)支持ASP.NET,控制台应用程序,Windows窗体Appliactions,WPF应用程序等。

http://exceptioneer.com/

+0

其VSTO插件 - 应用程序扩展 – shahjapan 2009-11-19 12:10:35

+0

您应该看看CodeSmith Insight(http://www.codesmithtools.com/product/insight)它提供了大量的功能,是管理异常和响应您的用户群。 – 2010-10-19 12:07:18

0

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

您正在使用哪种应用程序类型:web还是windows?

如果您使用的是asp.net,那么您可以将您的页面重定向到一个常见错误页面并记录该页面的错误。 Asp.net还提供了application_error事件,在发生未处理的异常时触发。

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

try 
{ 

//your code 

} 

Catch(Exception ex) 

{ 

Log(ex); 

} 

可以使用microsoft logging application block(或任何其他记录API)来记录你的异常。

1

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