C#调用c++时的异常 如何捕获
--------------------编程问答-------------------- .net 40 中,c# 默认情况下只处理SEH的异常。不处理CSE的异常。若你要捕获这类的异常。你需要再对应的方法上面加上
--------------------编程问答-------------------- 我也学习下…… --------------------编程问答-------------------- zealot112345 谢谢。
[HandleProcessCorruptedStateExceptions]
[SecurityCritical]
void HandleCPPException()
{
try{
//do some native exception
}
catch(system.accessvioliationexception) //捕获cse类型的异常
{}
}
我用的是.NET2.0,所以HandleProcessCorruptedStateExceptions是用不上的。
继续等回复
--------------------编程问答-------------------- 基本都是 try ---cache呀 --------------------编程问答-------------------- .net 3.5 以前的版本,可以在配置文件中添加
<configuration>
<runtime>
<legacyCorruptedStateExceptionsPolicy enabled="true"/>
</runtime>
</confguration>
你可以试试。 --------------------编程问答--------------------
再次说声谢谢!我刚试过,不起作用。程序会直接退出。
--------------------编程问答-------------------- 这样的问题应该很典型的啊。。 --------------------编程问答-------------------- 多找找dll的问题吧。
有些异常会造成程序异常退出,无法捕获的。别说C#就C++也做不到。 --------------------编程问答--------------------
大神谢谢。
看来只能从细处着手了,程序的稳定还真不是那么容易的哦。
--------------------编程问答-------------------- 实在不行的话,就把调用部分单独出来,封装成EXE,
它独立运行的话至少不会连累主程序。 --------------------编程问答-------------------- 如果主程序会退出 ,可以加个全局异常捕捉看看能起作用不 --------------------编程问答-------------------- Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.Run(new MainFrame());
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{ }
补充:.NET技术 , C#