c++ - VC++中的第一次机会异常

标签 c++ visual-c++ first-chance-exception

以下是我在 VS2010 中编写的 VC++ 代码的一部分。

do
{

    std:: cout << "\nOPTIONS:\n";
    std:: cout << "\n1. Get all session data.\n";
    std:: cout << "\n2. Get Nth session data\n";
    std:: cout << "\n3. Get Next session data\n";
    std:: cout << "\n4. Get Previous session data\n";
    std:: cout << "\n5. Get total no of sessions\n";
    std:: cout << "\n6. Exit\n";
    std:: cout << "\nEnter Your Option: ";

    std :: cin >> option;

    switch(int(option))
    {
         case 1:
            {
                data.ReadSetupFile();
                 break;
            }

        case 2:
            {
                break;
            }

        .....
        ......

        case 6:
            {

                std::cout<<"\nARE YOU SURE YOU WANT TO EXIT?(Press y for yes and any other character for no)\n";
                cin >> opt;
                break;
            }

        default:
            {
                std::cout << "\nINAVALID OPTION!!TRY AGAIN\n";
                break;
             }

    }

    std::cout<<"\nDO YOU WANT TO CONTINUE?(Press y for yes and any other character for no)\n";
    cin >> opt;

  }while(opt=='y');

但是,如果我插入一个字符而不是整数作为 option 的值,则菜单选项将继续打印在输出控制台中而不会终止,直到我使用 ctrl+c。在使用这种中断策略时,我得到的消息是:

SetupAPIReader.exe 中 0x75936da7 处的第一次机会异常:0x40010005:Control-C。

为什么执行没有终止?

最佳答案

如果给定的输入不是预期的类型,则设置 cinfailbit。检查此位并清除会将值重置为变量的初始值。

if(!cin)
    {
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }

关于c++ - VC++中的第一次机会异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25972373/

相关文章:

c++ - SFINAE 在评估模板参数中的 constexpr 时失败?

C++ 未执行的代码改变函数行为?

c++ - 我无法让我的调试器在第一次出现异常时停止中断

c++ - 如何在 Xcode 中运行 C++

c++ - Visual Studio Express 2012 项目中忽略的环境变量

c++ - 如何从函数指针和参数调用C++中的函数

c++ - 将光盘用作实时文件系统的 Windows API 是什么?

.net - SHCreateStreamOnFileEx 链接器错误