C++ 异常引发不一致性
我一直在玩错误处理,并编写了一个简短的程序,试图了解异常处理。我编写了以下程序,其中用户输入一个数字,该程序捕获cin引发的任何异常: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";
#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
,然后停止响应。