Re[2]: Как сделать исключение?
От: r1der Россия  
Дата: 17.08.09 19:06
Оценка:
Здравствуйте, Micren, Вы писали:

M>Здравствуйте, r1der, Вы писали:


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


M>1. Программа ошибкой не завершится. Будет установлен флаг failbit потока, а переменная не будет модифицирована. Так по умолчанию. Проверить флаг можно методом fail().

M>
M>    int num;
    cin>>>num;
M>    if(cin.fail())
M>    {
M>        cout<<"Error"<<endl;
M>        cin.clear();
M>        cin.ignore(numeric_limits<streamsize>::max(),'\n');
M>    }
M>


M>2. Для того, чтоб поток генерировал исключения необходимо установить флаги при которых будут эти исключения генерироваться.

M>
M>    int num;
M>    cin.exceptions(ios::failbit);
M>    try
M>    {
        cin>>>num;
M>    }
M>    catch(runtime_error& e)
M>    {
M>        cout<<e.what()<<endl;
M>    }
M>



а модно поподробнее про cin.exceptions(ios::failbit); и runtime_error& e .я знаю как раотаю исключения.. но мне непоятно.. почему исключение runtime_error&

и кстати что означает вот ээто? numeric_limits<streamsize>::max() где про это можно почитать?
icq 314624
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.