如果我想记录到目前为止整个应用程序中发生的所有异常,
我是否应该继承异常类并抛出该类的所有异常,
其构造函数将记录错误详细信息..
或者任何想法或建议???
最佳答案
根据应用程序的类型(ASP.NET/Console 等),可以采用不同的方法。
对于 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 事件或使用您自己的 HttpModule 连接到 Application.OnError 事件来捕获所有未处理的异常。
您还可以使用这些第三方异常处理程序之一。
ELMAH 支持 ASP.NET 应用程序
http://code.google.com/p/elmah/
Exceptioneer(我们构建这个 - 只是表明我对该领域的兴趣)支持 ASP.NET、控制台应用程序、Windows 窗体应用程序、WPF 应用程序等。
关于c# - 继承 Exception 类以记录所有后续发生的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1762622/