Обработка исключений в C++: try, catch, throw
Обработка исключений в C++ (try, catch, throw) ловит ошибки времени выполнения, не давая программе аварийно завершиться.
Исключение — это сигнал об ошибке, который выбрасывают через throw и перехватывают в блоке catch. Так ошибку можно обработать, а не уронить программу.
throw, try и catch
Опасный код помещают в try; throw выбрасывает исключение; catch его перехватывает. Метод what() возвращает текст ошибки.
#include <iostream>
#include <stdexcept>
using namespace std;
double divide(int a, int b) {
if (b == 0) throw runtime_error("деление на ноль");
return (double)a / b;
}
int main() {
try {
cout << divide(10, 2) << "\n";
cout << divide(10, 0) << "\n"; // здесь вылетит исключение
cout << "эта строка не выполнится\n";
} catch (const runtime_error& e) {
cout << "Ошибка: " << e.what() << "\n";
}
cout << "Программа продолжает работу\n";
return 0;
}Вывод:
5 Ошибка: деление на ноль Программа продолжает работу
Коротко
- throw выбрасывает исключение, catch его перехватывает.
- Опасный код оборачивают в try; после исключения остаток try пропускается.
- e.what() возвращает текст ошибки; программа продолжает работу после catch.
Проверьте себя
1. Каким оператором выбрасывают исключение?
Araise
Bthrow
Cexcept
Dpanic
2. Что произойдёт с кодом в try после строки, выбросившей исключение?
AВыполнится как обычно
BБудет пропущен — управление уйдёт в catch
CВыполнится дважды
DВызовет ошибку компиляции
3. Что возвращает метод what() у исключения?
AКод ошибки числом
BТекст описания ошибки
CИмя файла
DНомер строки