0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 20

Обработка исключений

07.12.2012, 13:35. Показов 753. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо отловить ввод данных некорректного типа.
Объясните пожалуйста на конкретном примере, как это правильно сделать.

C++ (Qt)
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
void main ()
{
setlocale(LC_ALL, "Russian_Russia.1251");
int h;
cout<<"Введите количество пар в последовательности"<<endl;
cin>>h;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2012, 13:35
Ответы с готовыми решениями:

Обработка исключений с пмощью структурированной обработки исключений
Есть функция, которая определенным образом работает с файлами,но при работе с файлами &quot;не подходящего&quot; типа вызывается...

Обработка исключений
Подскажите пожалуйста как продолжить выполнение программы после срабатывания оператора catch. catch завершает программу, но ее нужно...

обработка исключений
Есть вот такой код: #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) { ...

3
54 / 54 / 10
Регистрация: 26.09.2011
Сообщений: 186
07.12.2012, 14:24
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
25
26
27
28
29
30
31
#include <iostream>
#include <windows.h>
using namespace std;
int main ()
{
SetConsoleOutputCP(1251);
int h;
cout<<"Введите количество пра в последовательности"<<endl;
try {
    cin >> h;
    if(cin.good() == 0) {
        throw "Неккорректный ввод!\n";
    }
    if(h < 0) {
        throw 1;
    }
 
}
catch(char *str) {
    cin.clear();
    cin.ignore(256,'\n');
    cout << str << endl;
    return 0;
}
catch(int) {
    cout << "Число пар не может быть меньше нуля\n";
    return 0;
}
 
cout << h << endl;
}
Т.е. исключительная ситуация в данном коде может возникнуть в следующих случаях:
1 Если введена строка
2 ну и пускай, если введено отрицательное число пар
Вот мы и помещаем наше
C++
1
cin >> h;
в блок try{}, где и будем генерировать исключение
Для каждого случая (catch(char *s){} и catch(int) {})генерируем уникальное исключение и передаем их на обработку блоку catch. Catch-ей как throw может быть несколько главное, чтобы первые отличались по принимаемым типам данных. А можно определить общий catch(...) {} и обрабатывать все исключения
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 20
07.12.2012, 14:27  [ТС]
Спасибо большое.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
07.12.2012, 18:44
Vevern, что касается исключений, то делается это таким образом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// при возникновении ошибки генерировать исключениe
cin.exceptions(ios::failbit);
 
try
{        
    //...
    cin >> h;
}
 
catch(ios::failure&)
{
    // обработка ошибки...      
}
но в вашем случае скорее всего хватит и простой проверки состояния потока
C++
1
2
3
4
5
cin >> h;
if(!cin) 
{
    // обработка ошибки...
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2012, 18:44
Помогаю со студенческими работами здесь

Обработка исключений
что то я не пойму а что в плюсах нельзя разве сделать что то типа: try { ... } catch (int) { ... }

Обработка исключений
Нужно описать класс исключения и программу, способную генерировать и обрабатывать исключение (должна содержать блоки try, catch, throw)....

Обработка исключений
Как в блоке Try...Catch... обработать необработанное исключение по адресу? Что необходимо использовать в параметрах catch?

Обработка исключений
Нужно сделать ввод часов и минут с клавиатуры и сгенерировать исключения в мейне. как понимаю нужно реализовать через try и catch со...

Обработка исключений
Здравствуйте, вопрос: В функцию передается ссылка на элемент массива, необходимо предусмотреть выход за границу массива привожу код. ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru