Кратко:

Стандартная иерархия исключений в C++ включает базовый класс std::exception, от которого наследуются различные типы исключений для обработки различных ошибочных ситуаций.


Стандартная иерархия исключений в C++ основывается на иерархии классов, начиная с базового класса std::exception. Этот подход облегчает обработку различных типов ошибок и позволяет программистам реагировать на ошибочные ситуации в зависимости от их типа.

Базовый класс std::exception

std::exception является базовым классом для всех стандартных исключений в C++. Он определен в заголовочном файле <stdexcept> и содержит методы, такие как what(), который возвращает C-style строку с описанием ошибки.

Примеры стандартных исключений:

  • std::runtime_error: Используется для ошибок времени выполнения, которые могут возникнуть исключительно во время выполнения программы.
  • std::logic_error: Ошибки, связанные с неверной логикой программы, например, некорректные аргументы функции или недопустимые операции.
  • std::invalid_argument: Возникает, когда функция получает аргумент, который является недопустимым в свете текущего состояния программы.
  • std::out_of_range: Вызывается, когда аргумент функции находится за пределами допустимого диапазона.

Пример использования исключений:

#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 << division(10, 2) << std::endl; // Отлично, результат 5
        std::cout << division(10, 0) << std::endl; // Выбрасывает исключение std::runtime_error
    } catch (const std::exception& e) {
        std::cerr << "Exception occurred: " << e.what() << std::endl;
    }
 
    return 0;
}