Зацикливание обработки исключений

281
28 января 2017, 10:20

Столкнулся с очень необычной проблемой. Причем что интересно, происходит она только в одном случае, когда происходит отладка юнит тестов (если запустить этот код ВНЕ цикла отладки юнит теста, то все в порядке - все работает как ожидается).

У меня есть следующий c++/cli код:

MngdClass^ create_mngd_obj()
{
    try
    {
        native_class.build_object(); 
        return gcnew MngdClass(native_class.get_object());
    }
    catch (const NativeException& e)
    {
        int i = 0;
    }
}

вот нативный код, который выбрасывает исключение (стоит обратить внимание, что он находится в отдельной нативной c++ библиотеке):

struct NativeException
{
    const std::string message;
    NativeException(const std::string& message_) : message(message_)
    {
    }
};
void NativeClass()
{
    throw NativeException("O la la");
}

Так вот, если попытаться продебажить этот код в юнит тестах, произойдет зацикливание. А именно, будет выполняться такая последовательность с выбросами исключений (сам не понимаю, почему раскрутки стэка не происходит):

 native_class.build_object(); 
 native_class.get_object();

Если же код отлаживать не в юнит тестах, все происходит нормально. Выбрасывается исключение которое благополучно отлавливается обработчиком

Answer 1

Возможно кому-нибудь поможет. В настройках проекта для unit test'ов выставил enable native code debugging и allow unsafe code. Пока не понимаю, как это смогло помочь, буду разбираться

READ ALSO
Как подключить sfe movie

Как подключить sfe movie

Я пытаюсь подключить это http://sfemovieyalir

461
проверка на существование файла си

проверка на существование файла си

Как проверить на существование файла си?

364
Инициализация static в классе

Инициализация static в классе

Может кто-нибудь дать техническое объяснение, почему нельзя инициализировать статические переменные внутри класса, а в функциях можно?

380