C#未处理的异常处理程序,试图写入日志文件
|
我的应用程序是Windows Forms .NET 4 C#TCP / IP服务器。每天都有一次普通Windows Server崩溃消息崩溃(按close关闭此应用程序)。我插入了以下代码以捕获可能导致此异常的任何异常,并将简单的null对象插入到例程中,该例程会定期调用以生成测试异常。
两件事情:
当发生测试异常时,在调试器中命中日志代码,创建并写入文件,一切都很好。
没有调试器,我将收到“继续或退出” .NET stacktrace消息,并且无论选择哪个选项,都不会创建或写入文件。
.NET消息对我毫无用处。我需要崩溃的日志文件堆栈跟踪。有人知道我该怎么做吗?谢谢。
static class Program
{
[STAThread]
static void Main(string[] rgszArgs)
{
//My exception handler
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CatchUnhandledException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormMain(rgszArgs));
}
static void CatchUnhandledException
(object sender, UnhandledExceptionEventArgs e)
{
StreamWriter sw;
DateTime dtLogFileCreated = DateTime.Now;
Exception ex;
try
{
sw = new StreamWriter(\"crash-\" + dtLogFileCreated.Day + dtLogFileCreated.Month
+ dtLogFileCreated.Year + \"-\" + dtLogFileCreated.Second
+ dtLogFileCreated.Minute + dtLogFileCreated.Hour + \".txt\");
ex = (Exception)e.ExceptionObject;
sw.WriteLine(\"### Server Crash ###\");
sw.WriteLine(ex.Message + ex.StackTrace);
sw.Close();
}
finally
{
Application.Exit();
}
}
}
没有找到相关结果
已邀请:
4 个回复
棠媳鳖
方法抛出的任何异常,但是however2ѭ内部处理异常),这意味着
不会由于事件处理程序中的异常而抛出异常,因此
从不运行。 这意味着,如果
处理程序能够从异常中恢复,则应用程序将继续正常运行(如果
抛出了异常,则没有恢复的机会)。出于某种原因,我无法理解调试时的行为。.调试时,此行为已更改,因此引发了异常,使您可以在Visual Studio中立即调试异常-这就是为什么未处理的异常处理程序在运行时调试。 请注意,上面的“ 4”处理程序将捕获应用程序域中后台线程引发的异常。 另请参见Application.SetUnhandledExceptionMode。
筷啸够对铅
土投
揽芳僵迷仇
。这将自动写入事件日志。