C++ c++;处理返回值时出错返回错误

C++ c++;处理返回值时出错返回错误,c++,try-catch,C++,Try Catch,我有一个类,它为我提供了一些错误输入处理。它是一个被赋予了自己的“提取”操作符的类,我被要求实现我被赋予的代码。我遇到的问题是,我应该使用的代码与此类似 try { while (some condition) {....implemented code....} } catch (runtime_error& e) { cerr << e.what() << endl; return 1; } 正如我所设想的那样,我希望继续获取

我有一个类,它为我提供了一些错误输入处理。它是一个被赋予了自己的“提取”操作符的类,我被要求实现我被赋予的代码。我遇到的问题是,我应该使用的代码与此类似

try {
    while (some condition)
    {....implemented code....}
} catch (runtime_error& e) {
    cerr << e.what() << endl;
    return 1;
}

正如我所设想的那样,我希望继续获取输入,直到由于某种原因失败为止。为什么在这种情况下返回值会导致问题?

心理调试表明:

您的封闭函数具有表单的签名

std::istream& func_name(/*parameter list goes here*/)

因此编译错误

您应该返回一个
istream&
。我指的是引用,而不是超出范围的变量。您可以将while循环简化为:
while(std::cin)
-它与上面的含义相同,但键入时少了8个字符。是的,但是try-And-catch是否仍然在该方法中正确?在本例中,我假设1是一个占位符,我需要用我传递给函数的istream替换它?@gRnt否1不是占位符。任何返回流引用AFAIK的函数总是返回相同的istream对象,并且该对象本身是一个参数,而不是本地对象。编辑:现在查看示例输出,我认为程序应该输出数字1。如果我得到一个特定的错误,那么它应该显示数字1,而不是显示结果,然后通过cerr吐出错误。不知道怎么做,但我会继续阅读。我完全误解了手头的任务。我会把这个答案标记为正确的,纯粹是因为我当时问的问题,尽管上面的人回答了可怕的错误。然而,我确实设法弄明白了我在做什么,原来的问题是“不”。
while (!std::cin.fail())
std::istream& func_name(/*parameter list goes here*/)