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

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

Восстановить пароль Регистрация
 
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
18.01.2012, 02:02     Стандартные потоки и связанные с ними исключения #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++ Связанные классы
Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили пе C++
Связанные списки C++
Стандартные потоки, задача C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
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     Стандартные потоки и связанные с ними исключения
Ответ Создать тему
Опции темы

Текущее время: 22:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru