我试图以这种方式捕捉未处理的异常:
static class Program
{
[STAThread]
static void Main(string[] args)
{
Application.ThreadException += new ThreadExceptionEventHandler(Program.ThreadExceptionEventHandler);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(Program.UnhandledExceptionEvent);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
public static void UnhandledExceptionEvent(Object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show("UnhandledExceptionEvent", "UnhandledExceptionEvent");
}
public static void ThreadExceptionEventHandler(Object sender, ThreadExceptionEventArgs e)
{
MessageBox.Show(e.Exception.Message, "ThreadExceptionEventHandler");
}
}
private void button1_Click(object sender, EventArgs e)
{
//Execute method on a new thread
new Thread(delegate()
{
//Do stuff ...
throw new Exception("Some random unhandled exception");
}).Start();
}
异常被UnhandledExceptionEventHandler捕获,我可以看到弹出的消息框,但应用程序仍然崩溃说“程序已停止工作”。
如何在发生异常后保持应用程序运行?