Re: Как сделать исключение?
От: Micren  
Дата: 17.08.09 18:35
Оценка:
Здравствуйте, r1der, Вы писали:

R>Привет. Очередной у меня глупый вопрос возник.. допустим пользователь в инт переменную в помощью cin ввел букву.. программа завершится с ошибкой.. как перехватить исключение?


1. Программа ошибкой не завершится. Будет установлен флаг failbit потока, а переменная не будет модифицирована. Так по умолчанию. Проверить флаг можно методом fail().
    int num;
    cin>>num;
    if(cin.fail())
    {
        cout<<"Error"<<endl;
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(),'\n');
    }


2. Для того, чтоб поток генерировал исключения необходимо установить флаги при которых будут эти исключения генерироваться.
    int num;
    cin.exceptions(ios::failbit);
    try
    {
        cin>>num;
    }
    catch(runtime_error& e)
    {
        cout<<e.what()<<endl;
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.