Ahm*_*med 16 .net c# error-handling winforms
我是C#的新手.我正在编写一个基于桌面的小型应用程序,我需要在应用程序中使用此功能.
如果应用程序随时崩溃,应用程序应该有最后的机会收集堆栈跟踪并将其发回给我...
请告诉我这方面的指示.
我是否需要尝试捕获覆盖主应用程序的入口点?或者在C#应用程序中处理此类事情的最佳方法是什么.
谢谢,
Ase*_*tam 26
要捕获所有未处理的异常,请将其添加到program.cs:
[STAThread]
static void Main()
{
AppDomain currentDomain = default(AppDomain);
currentDomain = AppDomain.CurrentDomain;
// Handler for unhandled exceptions.
currentDomain.UnhandledException += GlobalUnhandledExceptionHandler;
// Handler for exceptions in threads behind forms.
System.Windows.Forms.Application.ThreadException += GlobalThreadExceptionHandler;
...
}
private static void GlobalUnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e)
{
Exception ex = default(Exception);
ex = (Exception)e.ExceptionObject;
ILog log = LogManager.GetLogger(typeof(Program));
log.Error(ex.Message + "\n" + ex.StackTrace);
}
private static void GlobalThreadExceptionHandler(object sender, System.Threading.ThreadExceptionEventArgs e)
{
Exception ex = default(Exception);
ex = e.Exception;
ILog log = LogManager.GetLogger(typeof(Program)); //Log4NET
log.Error(ex.Message + "\n" + ex.StackTrace);
}
Run Code Online (Sandbox Code Playgroud)
您可以通过exception.StackTrace获取堆栈跟踪