CLI / C ++和C#:如何在发布模式下捕获C ++异常

时间:2012-10-10 08:04:14

标签: c# c++ exception

我有这个问题:

Managed C++开始,我使用C# DLL我注册了delegate中定义的Managed C++C#库执行此delegate,在其中,它会引发native exception。在调试模式下,try/catch已执行,但在发布模式下则不会执行。但在同一场景中,如果100%托管代码抛出异常,我可以抓住它。

这是我正在使用的代码:

Managed C++

class CNativeClass
{
    public:
      int one;
}

// This C method is registred like Delegate in C#
void OnMsgReceived(ManagedObjectInCSharp^ obj)
{
    CNativeClass* pelota;
    pelota->one = 0; // <-- This procude a NullPointerException
    Console::WriteLine(L"OnMsgReceived");
}

我的C#使用delegate执行此try/catch。在调试中可以,但在发布中,它不是。

//But if I defined the method like this:
void OnMsgReceived(ManagedObjectInCSharp^ obj)
{
    try  
    {
        CNativeClass* pelota;
        pelota->one = 0; // <-- This procude a NullPointerException
        Console::WriteLine(L"OnMsgReceived");
    }
    catch(const char* str)
    {
    }
}

我的C#在发布模式下捕获异常。

1 个答案:

答案 0 :(得分:0)

好吧,也许这是一个很长的镜头,但尝试将此属性添加到您的C#方法中:

[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]

http://msdn.microsoft.com/en-us/magazine/dd419661.aspx