Директиваcatch
(catch
clause). Часть программы, которая обрабатывает исключение. Директива обработчика состоит из ключевого слова catch
, за которым следуют объявление исключения и блок операторов. Код в блоке catch
предназначен для обработки исключений типа, указанного в его объявлении.
Директиваusing
(using
directive). Объявление в форме using NS;
делает NS
доступными в ближайшей области видимости, содержащей и директиву using
, и само пространство имен.
Загромождение пространства имен (namespace pollution). Термин, используемый для описания ситуации, когда все имена классов и функций располагаются в глобальном пространстве имен. Большие программы, использующие код, который создан несколькими независимыми производителями, зачастую сталкиваются с конфликтами имен, если эти имена глобальны.
Множественное наследование (multiple inheritance). Наследование, при котором класс имеет несколько непосредственных базовых классов. Производный класс наследует члены всех своих базовых классов. Имена нескольких базовый классов указываются в списке наследования класса. Для каждого базового класса может быть предоставлен отдельный спецификатор доступа.
Обработка исключений (exception handling). Механизм уровня языка, предназначенный для ликвидации аномалий времени выполнения. Один независимо разработанный раздел кода может обнаружить проблему и передать исключение, которое может получить и обработать другая независимо разработанная часть программы. Часть кода, обнаруживающая ошибку, передает исключение, а часть кода, получающая его, осуществляет обработку.
Обработчик (handler). Синоним директивы catch
.
Обработчик для всех исключений (catch-all). Директива catch
, в которой объявляется исключение. Директива обработчика для всех исключений обрабатывает исключения любого типа. Обычно он используется для предварительной обработки исключения, осуществляемой локально. Затем исключение повторно передается другой части программы, в которой и осуществляется устранение причины проблем.
Объект исключения (exception object). Объект, используемый для передачи сообщения между блоками throw
и catch
. Объект создается в точке передачи и является копией использованного выражения. Объект исключения существует, пока не сработает последний обработчик для его типа. Тип объекта соответствует типу использованного выражения.
Объявлениеusing
(using
declaration). Механизм, позволяющий ввести одно имя из пространства имен в текущую область видимости. using std::сout;
. Это объявление сделает имя cout
из пространства имен std
доступным в текущей области видимости, благодаря чему имя cout
можно применять без спецификатора std::
.
Объявление исключения (exception declaration). Объявление директивы catch
, определяющее тип обрабатываемого исключения. Объявление действует как список параметров, каждый параметр которого инициализируется объектом исключения. Если спецификатор исключения имеет не ссылочный тип, то объект исключения копируется в обработчик.
Операторnoexcept
. Оператор, возвращающий тип bool
и указывающий, способно ли данное выражение передать исключение. Выражение не вычисляется. Результат — константное выражение. Его значение true
, если выражение не содержит оператора throw
и вызывает только те функции, которые не передают исключений; в противном случае результат — false
.
Оператор области видимости (scope operator). Оператор (::
) используется для доступа к именам пространства имен или класса.
Передача (raise). Синоним термина "throw" (передача). Программисты С++ используют термины "throwing" и "raising" как синонимы, означающие передачу исключения.
Повторная передача исключения (rethrow). Пустой оператор throw
повторно передает объект исключения. Повторная передача возможна только из блока catch
(обработчика) или из функции, прямо или косвенно вызываемой обработчиком. В результате будет повторно передан полученный ранее объект исключения.
Порядок выполнения конструкторов (constructor order). При не виртуальном наследовании части базовых классов строятся в том порядке, в котором они указаны в списке наследования класса. При виртуальном наследовании часть виртуального базового класса (классов) создается прежде любых других базовых классов. Они создаются в порядке расположения в списке наследования производного класса. Только самый последний производный тип может инициализировать виртуальный базовый класс; списки инициализации конструктора этого базового класса, расположенные в промежуточных базовых классах, игнорируются.