Кратко:
Механизм исключений в C++ позволяет структурированно обрабатывать ошибки, разрывая обычный поток выполнения программы на блоки try, throw, и catch.
- 
try: Блок кода, в котором может произойти исключение. Здесь указывается код, который нужно отслеживать на наличие ошибок.
- 
throw: Оператор, который генерирует исключение. Он используется внутри блокаtryдля явного указания на возникновение ошибочной ситуации.
- 
catch: Блок кода, который перехватывает и обрабатывает исключение, сгенерированное в блокеtry. Здесь указывается тип исключения, которое нужно перехватывать, и код обработки ошибки.
Пример использования механизма исключений:
#include <iostream>
#include <stdexcept>
 
double division(int a, int b) {
    if (b == 0) {
        throw std::runtime_error("Division by zero");
    }
    return static_cast<double>(a) / b;
}
 
int main() {
    try {
        std::cout << "Enter two numbers for division: ";
        int num1, num2;
        std::cin >> num1 >> num2;
 
        double result = division(num1, num2);
        std::cout << "Result of division: " << result << std::endl;
    } catch (const std::runtime_error& e) {
        std::cerr << "Runtime error occurred: " << e.what() << std::endl;
    } catch (...) {
        std::cerr << "Unknown exception occurred" << std::endl;
    }
 
    return 0;
}В этом примере:
- Функция divisionвыбрасывает исключениеstd::runtime_error, если второй аргумент равен нулю.
- В блоке tryвызывается функцияdivision, и если она выбрасывает исключение, управление передается соответствующему блокуcatch.
- В блоке catch (const std::runtime_error& e)мы обрабатываем исключение типаstd::runtime_error, выводим сообщение об ошибке.
- Блок catch (...)является общим блоком перехвата всех остальных исключений, не относящихся кstd::runtime_error.
Механизм исключений в C++ обеспечивает гибкую обработку ошибок и позволяет программистам создавать более надежные и структурированные программы, способные адекватно реагировать на неожиданные ситуации во время выполнения.