不能破坏MSVC中的异常

时间:2010-12-14 18:29:32

标签: visual-studio-2010 c++11

我在Visual Studio 10中从本机代码抛出异常。我已在debug->例外菜单中为所有异常启用了break in throw。它是常规的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 :(得分:0)

如果这是您似乎暗示的托管应用程序,那么我认为您需要启用“混合模式调试”。您是否检查过是否可以在此功能中设置断点?