当前位置:编程学习 > C#/ASP.NET >>

C#调用c++时的异常 如何捕获

--------------------编程问答-------------------- .net 40 中,c# 默认情况下只处理SEH的异常。不处理CSE的异常。若你要捕获这类的异常。
你需要再对应的方法上面加上

[HandleProcessCorruptedStateExceptions]
[SecurityCritical]
void HandleCPPException()
{
    try{
       //do some native exception
       }
    catch(system.accessvioliationexception) //捕获cse类型的异常
      {}
}
--------------------编程问答-------------------- 我也学习下…… --------------------编程问答-------------------- zealot112345 谢谢。
我用的是.NET2.0,所以HandleProcessCorruptedStateExceptions是用不上的。
继续等回复
--------------------编程问答-------------------- 基本都是 try ---cache呀 --------------------编程问答-------------------- .net 3.5 以前的版本,可以在配置文件中添加

<configuration>
<runtime>
<legacyCorruptedStateExceptionsPolicy enabled="true"/>
</runtime>
</confguration>


你可以试试。  --------------------编程问答--------------------
引用 5 楼 zealot112345 的回复:
.net 3.5 以前的版本,可以在配置文件中添加

<configuration>
<runtime>
<legacyCorruptedStateExceptionsPolicy enabled="true"/>
</runtime>
</confguration>


你可以试试。 


再次说声谢谢!我刚试过,不起作用。程序会直接退出。
--------------------编程问答-------------------- 这样的问题应该很典型的啊。。 --------------------编程问答-------------------- 多找找dll的问题吧。

有些异常会造成程序异常退出,无法捕获的。别说C#就C++也做不到。 --------------------编程问答--------------------
引用 8 楼 akirya 的回复:
多找找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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,