见过不少人、经过不少事、也吃过不少苦,感悟世事无常、人心多变,靠着回忆将往事串珠成链,聊聊感情、谈谈发展,我慢慢写、你一点一点看......
winform设置全局异常处理机制来获未处理的异常,通过订阅 Application.ThreadException
和 AppDomain.CurrentDomain.UnhandledException
事件来实现。
internal static class Program
{
/// <summary>
/// 应用程序入口
/// </summary>
[STAThread]
static void Main()
{
ApplicationConfiguration.Initialize();
// 订阅 ThreadException 事件,用于捕获 UI 线程上的未捕获异常
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
// 设置未经处理的异常模式,以便在非 UI 线程上也能捕获异常
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
// 订阅 UnhandledException 事件,用于捕获所有线程上的未捕获异常
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Run(new Form1());
}
// 处理 UI 线程上的未捕获异常
private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
HandleException(e.Exception);
}
// 处理所有线程上的未捕获异常
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
HandleException(e.ExceptionObject as Exception);
}
// 统一的异常处理方法
private static void HandleException(Exception ex)
{
if (ex == null) return;
// 记录错误日志
Application.Exit();// (可选)退出应用程序或采取其他措施
}
}
关注我,不失联。有啥问题请留言。