Winform增加全局异常捕获

在Program类中

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
try
{

//设置应用程序处理异常方式:ThreadException处理
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
//处理UI线程异常
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
//处理非UI线程异常
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());

}
catch (Exception ex)
{
LogService.WriteErrorLog($"系统异常,{DateTime.Now}异常原因{ex.Message}");
}

}

static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
//string str = GetExceptionMsg(e.Exception, e.ToString());
//MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
//LogManager.WriteLog(str);
LogService.WriteErrorLog($"Application_ThreadException异常,{DateTime.Now};异常原因{e.Exception.ToString() + e.ToString()}");
Application.Restart();
}

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
//string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());
//MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
//LogManager.WriteLog(str);
LogService.WriteErrorLog($"CurrentDomain_UnhandledException异常,{DateTime.Now};异常原因{e.ExceptionObject.ToString() + e.ToString()}");
Application.Restart();
}

上一篇:非常漂亮的WinForm控件库源代码


下一篇:Winform执行CMD命令