安装后未抛出 C# 异常
C# Exception not thrown after installation
我们在 Main()
中使用 try-catch-block 来捕获应用程序的所有异常并将它们写入 lgo 文件。在 VS2012 的发布配置中一切正常。抛出异常并将其保存到文件中。
使用WIX创建安装程序并安装应用程序后,直接抛出异常(并显示为对话框),但未被Main()中的try-catch-block捕获,因此未保存在文件中了。如何捕获 Main()
中的异常?
这是Program.cs中的代码:
[STAThread]
static void Main()
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
catch (Exception ex)
{
ExceptionLog.SaveExceptionCloseApp(Program.RuntimeGUID, System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex);
}
}
这对我们有用:
@Hans Passant:谢谢你的解决方案。
[STAThread]
static void Main()
{
Application.ThreadException += Application_ThreadException;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
ExceptionLog.SaveExceptionCloseApp(Program.RuntimeGUID, System.Reflection.MethodBase.GetCurrentMethod().Name + "()", e.Exception);
}
我们在 Main()
中使用 try-catch-block 来捕获应用程序的所有异常并将它们写入 lgo 文件。在 VS2012 的发布配置中一切正常。抛出异常并将其保存到文件中。
使用WIX创建安装程序并安装应用程序后,直接抛出异常(并显示为对话框),但未被Main()中的try-catch-block捕获,因此未保存在文件中了。如何捕获 Main()
中的异常?
这是Program.cs中的代码:
[STAThread]
static void Main()
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
catch (Exception ex)
{
ExceptionLog.SaveExceptionCloseApp(Program.RuntimeGUID, System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex);
}
}
这对我们有用:
@Hans Passant:谢谢你的解决方案。
[STAThread]
static void Main()
{
Application.ThreadException += Application_ThreadException;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
ExceptionLog.SaveExceptionCloseApp(Program.RuntimeGUID, System.Reflection.MethodBase.GetCurrentMethod().Name + "()", e.Exception);
}