为什么我的AppDomain.CurrentDomain.UnhandledException事件总是不会触发?

时间:2011-02-18 08:43:59

标签: c# .net exception-handling

我有一个以发布模式运行的Windows服务程序,它运行24/7,这使得某些进程中的COM调用C ++库,偶尔会崩溃但是 AppDomain.CurrentDomain.UnhandledException中的log4net日志调用< / strong>事件不会触发。

相反,该过程只是终止并且写了一条EventLog日志消息......但是再次奇怪的是我的代码没有任何EventLog.WriteEntry调用。

有些人可以帮我解决为什么AppDomain.CurrentDomain.UnhandledException在所有情况下都没有触发?

提前致谢

事件日志消息:

  

EventType clr20r3,P1 ProgramName.exe,P2 0.0.0.0,P3 4d5bd49f,P4 mscorlib,P5 2.0.0.0,P6 4a7cd8f7,P7 41b3,P8 a3,P9 system.argumentoutofrange,P10 NIL。

1 个答案:

答案 0 :(得分:1)

事件日志中的条目由Windows编写,并告诉您某些内容正在抛出ArgumentOutOfRangeException。如果没有看到AppDomain.CurrentDomain.UnhandledException的事件处理程序中包含的代码,就很难说为什么,但很可能会出现以下情况之一:

  • 您的异常处理程序正在抛出ArgumentOutOfRangeException
  • 你的进程中有多个AppDomain,而这是其中一个将参数抛出范围异常的。

前者更有可能。非常仔细地查看异常处理程序中的代码,并查找可以传递错误参数的任何地方。您可以尝试将整个异常处理程序包装在try`catch`中,该异常处理程序将在 异常处理程序中发生的任何异常记录到事件日志中,并查看是否可以获得更多信息,例如作为堆栈跟踪。

此外,请确保在应用程序中部署调试符号(.pdb文件),以便记录的任何堆栈跟踪都会为您提供行号以供参考。

相关问题