我有这个简单的尝试catch来抛出cin异常,但它永远不会抛出异常。
while(cin>>num) {
try {
if(cin.fail()) {
throw "error";
}
if(num>0) {
cout << "number greater than 0" << endl;
}
}
catch(char* error) {
cout << error << endl;
}
}
为什么不抛出异常?
答案 0 :(得分:3)
字符串文字,例如“错误”,与char*
不匹配,需要const char*
答案 1 :(得分:3)
cin&gt;&gt; num返回false,因此你的循环体根本没有被执行。
如果你真的需要使用execption
while(true)
{
cin >> num;
try{
if(cin.fail()){
throw "error";
}
if(num>0){
cout<<"number greater than 0"<<endl;
}
}
catch( char* error){
cout<<error<<endl;
break;
}
}
最好将try catch放在循环之外以获得更好的性能