Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

Стандартные потоки и связанные с ними исключения - C++

18.01.2012, 02:02. Просмотров 981. Ответов 1
Метки нет (Все метки)

Хочу задать выброс исключений если что-то с потоком не так, мне это и удалось, но я не могу очистить поток после этого. Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <stdexcept>
using namespace std;
 
int main()
{
    cin.exceptions(ios_base::failbit);
    int x;
 
    try
    {
        cin>>x; //для демонстрации нужно ввести что-то недопустимое, например символ
    }
 
    catch(ios_base::failure)
    {
        cout<<"Get exception";
        cin.clear(); //поток всё ещё сломан
    }
    cin>>x; //ошибка. cin всё ещё сломан и поэтому получаем опять exception
    cout<<x;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2012, 02:02     Стандартные потоки и связанные с ними исключения
Посмотрите здесь:
C++ Стандартные потоки
Стандартные потоки, задача C++
C++ Пакетированные стандартные блоки - Вложенные стандартные блоки
Стандартные массивы C++
C++ Стандартные типы С++
C++ стандартные функции
Стандартные библиотеки C++
Стандартные алгориты C++
Стандартные библиотеки с++ C++
Связанные списки C++
C++ Связанные классы
C++ связанные списки

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
18.01.2012, 02:35     Стандартные потоки и связанные с ними исключения #2
потому что
C++
1
clear();
генерирует исключение, если поток поломан и установлены exceptions()

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <stdexcept>
using namespace std;
 
int main()
{
    cin.exceptions(ios_base::failbit);
    int x;
 
    try
    {
        cin>>x; //для демонстрации нужно ввести что-то недопустимое, например символ
    }
 
    catch(ios_base::failure)
    {
        cin.exceptions(ios_base::goodbit);
        cout<<"Get exception\n";
        cin.clear(); //поток всё ещё сломан
    }
    cin.ignore();
    cin>>x; //ошибка. cin всё ещё сломан и поэтому получаем опять exception
    cout<<x;
}
и все пучком
Yandex
Объявления
18.01.2012, 02:35     Стандартные потоки и связанные с ними исключения
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru