引发异常不一致

Exception Throwing Inconsistency

本文关键字:不一致 异常      更新时间:2023-10-16

我一直在玩弄错误处理,并编写了一个简短的程序来尝试理解异常处理。 我编写了以下程序,其中用户输入一个数字,程序捕获 cin 引发的任何异常:

#include <iostream>

int main()
{
    std::cin.exceptions(std::cin.failbit);
    int ReturnCode = 0;
    try{
        float Number;
        std::cout << "Number: n";
        std::cin >> Number;
        std::cout << Number << "n";
    }
    catch(...){
        std::cerr << "Input error n";
        std::cin.clear();
        char BadInput[5];
        std::cin >> BadInput;
        ReturnCode = 1;
    };
    char StopChar;
    std::cout << "Press a key and enter: n";
    std::cin >> StopChar;
    return ReturnCode;
}

我在 Xcode 中编译了代码,但在给出字符串时没有引发异常。 但是,当我使用终端和命令g++ main.cpp -Wall -Wextra -o program编译它时,一切正常。 这是怎么回事,用 Xcode 编译和使用终端有什么区别? 任何帮助将不胜感激!

似乎是libc ++中的一个错误。

从 Xcode 编译时,默认设置是将 clang 与 libc++ 一起使用。而 g++ 使用 libstdc++。在 Xcode 中将库设置为 libstdc++ 会导致引发异常。