我在用C ++ / CLI编写的程序中使用外部C库和.NET框架4.有时lib崩溃了,我收到了消息:
未处理的异常:System.AccessViolationException:尝试读取或写入受保护的内存。
所以我尝试使用try / catch块来处理它:
try
{
Init(); //< lib call which sometimes crashes
}
catch (Exception^ e)
{
// handle the error
}
但是异常仍然没有被捕获:我的程序在进入catch块之前崩溃了。
如何处理此异常以防止程序崩溃?
答案 0 :(得分:3)
为清楚起见,我在the answer处的评论中复制/粘贴Flot2011:
有几种方法可以解决这个问题:
- 重新编译为.NET 3.5程序集并在.NET 4.0中运行。
- 在配置/运行时元素下的应用程序配置文件中添加一行:
<legacyCorruptedStateExceptionsPolicy enabled="true|false"/>
- 使用
HandleProcessCorruptedStateExceptions
属性装饰要捕获这些异常的方法。有关详细信息,请参阅this article。