我有一个混合的 .NET 和本机代码控制台应用程序。由于 Visual C 运行时库致命错误,应用程序进程被终止。即使我使用以下内容,托管代码也不会捕获本机异常:
- 尝试/捕获块
-
AppDomain.UnHandledExption += ...
- 标记
RuntimeCompatibilityAttribute(WrapNonExceptionThrows = true)
在 AssemblyInfo 文件中。
我还可以做些什么?
.NET 4 中的本机异常已发生更改,因此无法使用标准 catch 块捕获它们。您特别必须将抛出异常的函数标记为[HandleProcessCorruptedStateExceptions]
能够抓住它。
更多这里,http://msdn.microsoft.com/en-us/magazine/dd419661.aspx http://msdn.microsoft.com/en-us/magazine/dd419661.aspx
请注意该文章中的注释,例如如果您想正常捕获它们而不是遵循他们执行finally块并退出的建议,请添加legacyCorruptedStateExceptionsPolicy=true
到你的配置文件中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)