cin和try / catch

时间:2011-11-21 05:55:12

标签: c++ exception-handling

我有这个简单的尝试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;
   }
}

为什么不抛出异常?

2 个答案:

答案 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放在循环之外以获得更好的性能