Здравствуйте, 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() где про это можно почитать?