Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Поддержка расширенных символовСодержание книги
Поиск на нашем сайте
При работе с C++ имеется встроенный тип данных wchar_t, wchar_t – ключевое слово, а в стандарте С99 wchar_t определен в нескольких заголовочных файлах: <stddef.h> <stdlib.h> <wchar.h> <wctype.h> В C++ реализуется поддержка ввода-вывода для расширенных символов с помощью заголовочного файла <iostream.h>. Стандарт С99 поддерживает многобайтные символы, что невозможно в C++.
Глава 14. Исключения и их обработка Исключение – это некоторое действие, которое выполняется при наступлении нестандартных ситуаций. Говоря о об исключениях в С++, рассмотрим одну из таких нестандартных ситуаций — деление на 0. Представьте, что мы работаем в программе, где вручную вносим много числовых данных. Далее, в результате каких-то расчетов программы, значение одной из переменных станет равным 0. А в следующей строке кода это значение выступает делителем. Конечно, это действие приведет к неизбежному закрытию программы и выходу из нее. А теперь представьте, какие чувства вы испытаете, когда полчаса вводите данные, работая в этой программе, и на каком-то этапе она просто перестает работать и закрывается, а все данные пропадают. Пример 1 В переменную num 2 необходимо записать значение 0 для понимания сути проблемы. #include <iostream>; using namespace std;
Int main() { setlocale(LC_ALL, "rus");
int num 1; int num2; int var = 2; //управляющая переменная для while
while(var--) { cout << "Введите значение num1: "; cin >> num1; cout << "Введите значение num2: "; cin >> num2;
cout << "num1 + num2 = " << num1 + num2 << endl; cout << "num1 / num2 = " << num1 / num2 << endl; cout << "num1 - num2 = " << num1 - num2 << endl; cout << "=================================" << endl << endl; }
cout << "Программа завершила работу!" << endl << endl;
return 0; }
В программе цикл должен отработать два раза. В строке 12 мы передаем циклу значение переменной var и в этой же строке уменьшаем её на единицу, используя операцию декремента (var--). Но если в переменную num2 будет введено значение 0, мы увидим только результат сложения a + b, и программа завершит работу независимо от того, есть код ниже или нет, отработал цикл или нет. Используя исключения, мы сможем избежать таких проблем. Чтобы «прикрутить» исключение к этому примеру, надо познакомиться со следующими командами С++: throw, try, catch. В исходном коде ниже исключение сработает так: программа получает конкретное указание от программиста — если значение определённой переменной в определённом участке кода (в try-блоке) будет равно 0, то в этом случае пусть генерируется исключение throw. Это исключение автоматически передастся catch -блоку в виде параметра и выполнится код этого блока. Пример 2. #include <iostream>; using namespace std;
Int main() { setlocale(LC_ALL, "rus");
int num1; int num2; int var = 2;
while (var --) { cout << "Введите значение num1: "; cin >> num1; cout << "Введите значение num2: "; cin >> num2;
cout << "num1 + num2 = " << num1 + num2 << endl; cout << "num1 / num2 = ";
try //код, который может привести к ошибке, располагается тут { if (num2 == 0) { throw 123; //генерировать целое число 123 } cout << num1 / num2 << endl; } catch(int i)// сюда передастся число 123 { cout << "Ошибка №" << i << " - на 0 делить нельзя!!!!" << endl; }
cout << "num1 - num2 = " << num1 - num2 << endl; cout << "=================================" << endl << endl; }
cout << "Программа завершила работу!" << endl << endl;;
return 0; }
В этом коде сначала был определен try-блок. В нем располагается код, который потенциально может вызвать ошибку в работе программы, а именно ошибку в случае деления на 0. Задаем условие if — если num2 равно 0, то генерировать целое число 123, к примеру. В этом случае try-блок сразу прекращает выполнение дальнейших команд, а число 123 «падает» в catch. В нашем примере он выводит сообщение об ошибке. При этом программа продолжает работать и выполнять команды, размещенные ниже. Если же число num2 не будет равно нулю, то в try-блоке выполнится команда cout << num1 / num2 << endl;, а catch не сработает. Приложение 1.
|
||||
Последнее изменение этой страницы: 2021-07-18; просмотров: 54; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.1.100 (0.009 с.) |