C++ Урок 7: Обработка исключений (деление на ноль)

Исключение — это событие, выходящее за рамки обычного выполнения программы. Рассмотрим пример: программа запрашивает у пользователя два числа, складывает и делит их. Если пользователь введёт ноль в качестве делителя, возникнет ошибка, потенциально приводящая к аварийному завершению программы. Деление на ноль — критичная ошибка.

Проблема деления на ноль

Продемонстрируем проблему: при вводе, например, 23 и 0, программа выдаст ошибку и, возможно, завершится. Именно для обработки подобных ситуаций предназначены исключения.

Обработка исключений с помощью try-catch

Для обработки исключений в C++ используется блок try-catch. В блоке try размещается код, который может вызвать исключение. Если исключение возникает, выполнение try прерывается, и управление передаётся блоку catch, где обрабатывается исключение.

Ниже представлен пример кода с реализацией обработки исключения деления на ноль:

#include <iostream>
#include <exception>

using namespace std;

int main() {
  double a, b, result;

  cout << "Введите два числа: " << endl;
  cin >> a >> b;

  try {
    if (b == 0) {
      throw runtime_error("Деление на ноль!"); 
    }
    result = a / b;
    cout << "Результат: " << result << endl;
  } catch (const runtime_error& error) {
    cerr << "Ошибка: " << error.what() << endl;
  }

  return 0;
}

В этом примере, если делитель равен нулю, генерируется исключение runtime_error. В блоке catch это исключение перехватывается, и на экран выводится сообщение об ошибке. Если деление выполняется успешно, результат выводится на экран.

Тестирование кода

При вводе 23 и 0, программа выведет сообщение об ошибке «Деление на ноль!», подтверждая корректность работы блока try-catch. При вводе, например, 50 и 5, программа выведет результат деления (10).

В C++ обработка исключений осуществляется с помощью блока try-catch. Он позволяет перехватывать ошибки во время выполнения программы и обрабатывать их корректно, предотвращая аварийное завершение. Этот механизм существенно повышает надёжность и стабильность программного обеспечения.

Что будем искать? Например,программа