C++ 异常引发不一致性

C++ 异常引发不一致性,c++,xcode,C++,Xcode,我一直在玩错误处理,并编写了一个简短的程序,试图了解异常处理。我编写了以下程序,其中用户输入一个数字,该程序捕获cin引发的任何异常: #include <iostream> int main() { std::cin.exceptions(std::cin.failbit); int ReturnCode = 0; try{ float Number; std::cout << "Number: \n";

我一直在玩错误处理,并编写了一个简短的程序,试图了解异常处理。我编写了以下程序,其中用户输入一个数字,该程序捕获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;

}
#包括
int main()
{
标准::cin.exceptions(标准::cin.failbit);
int ReturnCode=0;
试一试{
浮点数;
std::cout>Number;
std::coutstopchar;
返回代码;
}

我在Xcode中编译了代码,但是在给定字符串时没有引发异常。然而,当我使用terminal和命令
g++main.cpp-Wall-Wextra-o程序编译它时,一切都很好。到底发生了什么,在Xcode中编译和使用terminal之间有什么区别?任何帮助都将非常有用它看起来像是libc++中的一个bug


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

这似乎是libc++中的错误


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

是的,如果我将
asdf
同时输入,一个会说
input error
,另一个说
0
,并停止响应。是的,如果我输入
asdf
在这两种情况下,一个说
输入错误
,另一个说
0
,然后停止响应。