防止Winform在未处理的异常上崩溃
本文关键字:异常 崩溃 未处理 Winform 防止 | 更新日期: 2023-09-27 17:49:24
我想用这种方式捕捉未处理的异常:
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捕获,我可以看到弹出的消息框,但应用程序仍然崩溃,说"程序已停止工作"。
如何在异常发生后保持应用程序运行
有关捕获未处理异常的相关信息,请参阅此stackoverflow问题。