кинь и попробуй / поймай - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть эта простая попытка 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 ]

3 голосов
/ 21 ноября 2011

cin >> 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;
   }
}

Лучше поставить ловушку за пределами цикла, чтобы получить лучшую производительность

3 голосов
/ 21 ноября 2011

Строковые литералы, такие как «error», не совпадают char*, должно быть const char*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...