gpt4 book ai didi

c++ - 异常抛出不一致

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:34 31 4
gpt4 key购买 nike

我一直在研究错误处理,并编写了一个简短的程序来尝试理解异常处理。我编写了以下程序,其中用户输入一个数字,该程序捕获 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++ 会导致抛出异常。

关于c++ - 异常抛出不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13537324/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com