Кратко:
Стандартная иерархия исключений в 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;
}