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