首先:我在SO上查看了所有类似的问题,没有一个答案无济于事。
我尝试了所有三个选项(Automatic, Catch, Throw
)。在所有结果中,行为完全相同。
ThreadException
没有帮助。
有一个项目。一个大的。在超过4万行代码后,当局决定添加日志记录。正常,已经添加了Debug级别,现在出现了Exception序列。
有一种变体可以添加到try {} catch {log.write (message)}
的任何地方,但是我认为这不是最佳选择。
我尝试使用UnhandledExceptionHandler
,但是在工作室之外(如果易于运行而无需调试)处理程序将无法正常工作。
问题:有人遇到过这种情况吗?在这种情况下,您能提供什么建议?
需要什么:拦截发行中的所有(不仅是致命的)异常并将它们记录下来。
WinForms,.NET 2.0(是的,很糟糕:)
我将Handler
的{{1}}挂在Main
之前:
Application.Run (mainForm)
处理代码
AppDomain.CurrentDomain.UnhandledException + = UnhandledExceptionHandler;
Application.SetUnhandledExceptionMode (UnhandledExceptionMode.CatchException);
该代码根本无法工作,就好像它不存在一样。在VS中,在调试模式下,一切都很好-可以在此方法内放置一个断点,并写入日志。我直接运行.exe时,似乎处理程序消失了。