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