“cin.exceptions”和“exception”在这里意味着什么

时间:2015-12-19 03:48:35

标签: c++ exception

我目前是本科工程专业的学生,​​对编程有浓厚的兴趣和热情。这些天我试图通过一些在线参考和教程网站学习C ++。但有一些问题我无论如何也无法自己解决。

有人可以帮助我解释一下cin.exceptions(ios_base::failbit); //throw exception on failbit set的字面含义吗?

我知道ios_base::failbit和例外(exception是STL中的一个类)。

根据我的理解,这意味着当输入不是数字时,它将导致failbit标志,一旦发生这种情况,系统将抛出异常。

我很困惑为什么在catch括号中它是exception而不是exceptions

//this is a piece of code on my lecture notes   
#include <iostream>
#include <string>
using namespace std;
int read_int(const string& prompt);

int main()
{
    int n;
    n=read_int("Enter a number: ");
    cout<<"n: "<<n<<endl;

}

int read_int(const string& prompt){
    cin.exceptions(ios_base::failbit);//Why this line "exceptions" different from the next "exception"
    int num=0;
    while(true){
        try{
            cout<<prompt;
            cin>>num;
            return num;
        }catch(exception ex)// what does "exception" here mean?
        {
            cout<<"Bad numeric string--try again\n";
            cin.clear();
            cin.ignore();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

cin.exceptions(...)中,例外是函数名称。特别是this function,让你为流设置一个新的异常掩码。

catch(exception ex)中,exception是类型名称。特别是类型exception,它是异常的基本类型。在这种情况下,这意味着您将捕获任何异常,因为它们都应该从exception继承。