Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Преждевременное завершение выполнения программы
В некоторых случаях может возникнуть условие, при котором дальнейшее выполнение программы лишено смысла, например, отсутствует свободная память при использовании динамической памяти. В этом случае имеет смысл вывести сообщение об ошибке и прервать выполнение программы досрочно. Для этого предназначена функция exit()
. Прототип функции:
#include <process.h>
void exit(int code);
В качестве параметра функция принимает число, которое является статусом завершения. Число 0
означает нормальное завершение программы, а любое другое число — некорректное завершение. Эти числа передаются операционной системе. Вместо чисел можно использовать макроопределения EXIT_SUCCESS
(нормальное завершение) и EXIT_FAILURE
(аварийное завершение). Определения макросов:
#include <cstdlib> /* или #include <stdlib.h> */
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
Пример:
exit(EXIT_FAILURE); // Аналогично exit(1);
Помимо функции exit()
для аварийного завершения программы предназначена функция abort()
. В этом случае завершение программы осуществляется операционной системой с выводом диалогового окна. Прототип функции:
#include <process.h>
void abort(void);
В качестве примера получим число от пользователя и выведем результат. При этом обработаем ошибку ввода (листинг 2.16).
Листинг 2.16. Преждевременное завершение выполнения программы
#include <iostream>
#include <clocale>
#include <cstdlib>
#include <process.h>
int main() {
std::setlocale(LC_ALL, "Russian_Russia.1251");
int x = 0;
std::cout << "Введите число: ";
std::cout.flush();
std::cin >> x;
if (!std::cin.good()) {
std::cout << "Вы ввели не число" << std::endl;
// Сбрасываем флаг ошибки, иначе окно закроется
std::cin.clear();
std::cin.ignore(200, '\n').get();
// Завершаем выполнение программы
exit(EXIT_FAILURE); // Аналогично exit(1);
}
std::cout << "Вы ввели: " << x << std::endl;
std::cin.ignore(200, '\n').get();
return 0;
}
В этом примере вместо функции exit()
можно было воспользоваться инструкцией return
, так как завершение программы выполнялось внутри функции main()
. Однако в больших программах основная часть кода расположена вне функции main()
и в этом случае инструкцией return
для завершения всей программы уже не обойтись.
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов