Не могу разбить на исключения в MSVC - PullRequest
1 голос
/ 14 декабря 2010

У меня возникло исключение из нативного кода в Visual Studio 10. Я включил прерывание при броске для всех исключений в меню отладки-> исключений.Это обычный C ++ std :: runtime_error, здесь нет никаких SEH или управляемых исключений.Но время выполнения не сломается на броске.Это также не поймает их - даже если я явно перехватил runtime_errors, так как я их выбрасываю.Они наконец пойманы управляемым кодом вызова.Я ставлю точку останова перед оператором throw, и я знаю, какой из них выбрасывает и почему, но все еще не понимает, почему я не могу его сломать или перехватить.

    try {
        //...
        std::for_each(...) {
            if (condition) {
                std::stringstream str;
                str << "Error: Unexpected end of file in file " << arg.first << "\n";
                str << "Unused tokens: \n";
                for(int i = 0; i < token_stack.size(); i++) {
                    auto ref = token_stack.top();
                    str << "    " << ref->contents << " at line " << ref->line << "\n";
                    token_stack.pop();
                }
                throw std::runtime_error(str.str());
            }
        });
        //...
    }
    catch(const std::runtime_error& exception) {
        std::cout << exception.what() << std::endl;
        return;
    }

Функция в конце концов вызывается изуправляемый код.Я знаю, что это оператор броска - один бросок.

1 Ответ

0 голосов
/ 15 декабря 2010

Если это управляемое приложение, как вы, вероятно, подразумеваете, то я думаю, что вам нужно включить «отладку в смешанном режиме». Вы проверили, можете ли вы установить точку останова в этой функции?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...