НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ

C++ Підручник

C++ Головна C++ Інтро C++ Початок роботи C++ Синтаксис C++ Виведення C++ Коментарі C++ Змінні C++ Введення користувача C++ Типи даних C++ Оператори C++ Рядки C++ Математика C++ Булеві C++ Умови C++ Switch C++ Цикл While C++ Цикл For C++ Break/Continue C++ Масиви C++ Структури C++ Enums C++ Довідники C++ Вказівники

C++ Функції

C++ Функції C++ Параметри функції C++ Перевантаження функцій C++ Область застосування C++ Рекурсія

C++ Класи

C++ ООП C++ Класи/Об’єкти C++ Методи класу C++ Конструктори C++ Специфікатори доступу C++ Інкапсуляція C++ Успадкування C++ Поліморфізм C++ Файли C++ Винятки C++ Дата

C++ Як зробити

Скласти два числа Випадкові числа

C++ Довідник

C++ Довідник C++ Ключові слова C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime>

C++ Приклади

C++ Приклади C++ Компілятор C++ Вправи C++ Вікторина C++ Сертифікат

Мова програмування C++. Уроки W3Schools для початківців українською мовою

En Es De Fr

C++ Винятки


C++ Винятки

Під час виконання коду C++ можуть виникати різні помилки: помилки кодування, зроблені програмістом, помилки через неправильне введення чи інші непередбачені речі.

Якщо виникає помилка, C++ зазвичай зупиняється та генерує повідомлення про помилку. Технічний термін для цього такий: C++ викине виняток (викине помилку).


C++ try та catch

Обробка винятків у C++ складається з трьох ключових слів: try, throw та catch:

Інструкція try дозволяє визначити блок коду, який буде перевірено на помилки під час його виконання.

Ключове слово throw генерує виняток у разі виявлення проблеми, що дозволяє нам створити спеціальну помилку.

Інструкція catch дозволяє визначити блок коду, який буде виконано, якщо в блоці try станеться помилка.

Ключові слова try та catch ідуть парами:

Приклад

try {
  // Блок коду для try
  throw exception; // Створення винятку, коли виникає проблема
}
catch () {
  // Блок коду для обробки помилок
}

Розглянемо наступний приклад:

Приклад

try {
  int age = 15;
  if (age >= 18) {
    cout << "Доступ надано - ви достатньо дорослі.";
  } else {
    throw (age);
  }
}
catch (int myNum) {
  cout << "У доступі відмовлено - вам має бути не менше 18 років.\n";
  cout << "Вік є: " << myNum;
}
Спробуйте самі »

Пояснення прикладу

Ми використовуємо блок try, щоб перевірити деякий код: якщо змінна age менша за 18, ми throw (викидуємо) виняток і обробляємо його в блоці catch.

У блоці catch ми виявляємо помилку та щось з нею робимо. Інструкція catch приймає параметр: у нашому прикладі ми використовуємо змінну int (myNum) (оскільки ми створюємо виняток типу int у try (age)), щоб вивести значення age.

Якщо помилка не виникає (наприклад, якщо age (вік) становить 20 замість 15, тобто він буде більшим за 18), блок catch пропускається:

Приклад

int age = 20;
Спробуйте самі »

Ви також можете використати ключове слово throw, щоб вивести контрольне число, як-от спеціальний номер/код помилки для цілей організації (505 у нашому прикладі):

Приклад

try {
  int age = 15;
  if (age >= 18) {
    cout << "Доступ надано - ви достатньо дорослі.";
  } else {
    throw 505;
  }
}
catch (int myNum) {
  cout << "У доступі відмовлено - вам має бути не менше 18 років.\n";
  cout << "Номер помилки: " << myNum;
}
Спробуйте самі »

Обробка будь-якого типу винятків (...)

Якщо ви не знаєте тип throw, який використовується в try, ви можете використовувати синтаксис "трьох крапок" (...) всередині блоку catch, який оброблятиме будь-який тип винятку:

Приклад

try {
  int age = 15;
  if (age >= 18) {
    cout << "Доступ надано - ви достатньо дорослі.";
  } else {
    throw 505;
  }
}
catch (...) {
  cout << "У доступі відмовлено - вам має бути не менше 18 років.\n";
}
Спробуйте самі »


Коментарі