我目前是本科工程专业的学生,对编程有浓厚的兴趣和热情。这些天我试图通过一些在线参考和教程网站学习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();
}
}
}
答案 0 :(得分:1)
在cin.exceptions(...)
中,例外是函数名称。特别是this function,让你为流设置一个新的异常掩码。
在catch(exception ex)
中,exception是类型名称。特别是类型exception
,它是异常的基本类型。在这种情况下,这意味着您将捕获任何异常,因为它们都应该从exception
继承。