C++ try未捕获非整数输入

C++ try未捕获非整数输入,c++,try-catch,C++,Try Catch,我想要实现的很简单,如果输入不是整数,它应该显示数字是无效的 数字已设置为整数 输入->1的结果为=>1,输入->a的结果为=>a,所以它不捕获任何内容 我在这个试抓块中遗漏了什么 您必须启用异常。添加cin.ExceptionsStream::failbit;在打电话给cin之前。默认情况下,IOFFROW不使用它们原本是在异常甚至不是C++的一部分时设计的异常。流不会默认抛出异常。如果希望它们抛出异常,则需要通过调用exceptions成员函数来启用它们 std::cin.exception

我想要实现的很简单,如果输入不是整数,它应该显示数字是无效的

数字已设置为整数

输入->1的结果为=>1,输入->a的结果为=>a,所以它不捕获任何内容


我在这个试抓块中遗漏了什么

您必须启用异常。添加cin.ExceptionsStream::failbit;在打电话给cin之前。默认情况下,IOFFROW不使用它们原本是在异常甚至不是C++的一部分时设计的异常。

流不会默认抛出异常。如果希望它们抛出异常,则需要通过调用exceptions成员函数来启用它们

std::cin.exceptions(std::istream::failbit);

不要在流中启用异常,除非您确实需要它们并了解它们的功能。大多数输入失败应该通过提示和重复来处理,而不是抛出异常。在重复失败之后,当然,抛出一个异常。但这不是小溪的责任

但是,如果您确实需要在输入失败时引发异常,则很容易做到:

try {
    std::cin >> number;
    if (!std::cin)
        throw whatever;
}
try {
    std::cin >> number;
    if (!std::cin)
        throw whatever;
}