Исключение — это событие, выходящее за рамки обычного выполнения программы. Рассмотрим пример: программа запрашивает у пользователя два числа, складывает и делит их. Если пользователь введёт ноль в качестве делителя, возникнет ошибка, потенциально приводящая к аварийному завершению программы. Деление на ноль — критичная ошибка.
Проблема деления на ноль
Продемонстрируем проблему: при вводе, например, 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. Он позволяет перехватывать ошибки во время выполнения программы и обрабатывать их корректно, предотвращая аварийное завершение. Этот механизм существенно повышает надёжность и стабильность программного обеспечения.