Иерархия исключений стандартной библиотеки

Опыт показывает, что исключения можно четко разделить на ряд категорий. Стандартная библиотека C++ реализует иерархию классов исключений.

Вершиной иерархии является базовый класс exception (определенный в

заголовочном файле <exception>), который содержит функцию what(),

переопределяемую в каждом производном классе для выдачи соответствующего

сообщения об ошибке.

Непосредственными производными классами базового класса exception

являются runtime_error и logic_error (оба определены в заголовочном файле

<stdexcept>), каждый из которых имеет несколько производных классов.

Кроме того, производными от exception являются исключения, генерируемые

операциями C++, например, bad_alloc, которое выбрасывается операцией new

(раздел 16.11), bad_cast, выбрасываемое операцией dynamiccast (глава 13)

и bad_typeid, выбрасываемое typeid (глава 13). Если включить в список throw

функции спецификацию bad_exception, то при появлении

непредусмотренного исключения unexpected сможет выбрасывать bad_exception — вместо

завершения программы (по умолчанию) или вызова другой функции,

зарегистрированной в set_unexpected.

Класс logic_error является базовым классом нескольких стандартных

классов исключений, указывающих на ошибки в программной логике. Класс

invalid_argument указывает, что функции был передан недопустимый

аргумент. (Правильное написание кода может, конечно, предотвратить передачу

функции недопустимых аргументов). Класс length_error указывает, что для

объекта была использована длина, большая максимально допустимой для

объекта, над которым выполняются манипуляции. Класс out_of_range

указывает, что значение, например, индекса массива находится вне допустимого

диапазона.

Класс runtime_error является базовым классом нескольких других

стандартных классов исключений, указывающих на ошибки времени выполнения.

Класс overflow_error указывает на ошибку арифметического переполнения

(т.е. результат арифметической операции превосходит максимальное число,

которое может хранить компьютер). Класс underflow_error указывает на ошибку

исчезновения арифметического порядка (т.е. результат арифметической

операции меньше минимального числа, которое может хранить компьютер).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: