если определён соответствующий конструктор преобразования
throw 1; throw "Это сообщение об исключении…"; throw 2*2*fVal; throw (int)5.5; throw (ComplexType)125.96; /* Разумеется, если определён соответствующий конструктор преобразования или функция приведения. */
Для генератора важны как значение выражения-исключения, так и его тип. Иногда даже конкретное значение исключения не так важно, как его тип.
В качестве исключения может быть использовано значение указателя. Допускаются исключения и такого вида:
throw NULL; throw (void *) &iVal;
И, естественно, не существует быть генераторов исключений для выражений типа void. Пустой тип не имеет значений.
Обычно генератор исключения используется в сочетании с try-блоком. Их взаимодействие обеспечивается через стек вызова. Поэтому точка генерации исключения должна располагаться в теле функции, непосредственно или косвенно вызываемой из множества операторов данного try-блока. В крайнем случае, генератор исключения сам может быть одним из операторов этого try-блока.
Рассмотрим небольшой пример, после которого опишем основные принципы взаимодействия генератора и блока перехвата исключений.
Но сначала вспомним пару форм Бэкуса-Наура, посвящённых объявлению и определению функций. Речь пойдёт о спецификации исключения. С первого взгляда всё это уже кажется простым и понятным:
ОбъявлениеФункции ::= [
СписокСпецификаторовОбъявления]
Описатель
[
СпецификацияИсключения];
ОпределениеФункции ::= [
СписокСпецификаторовОбъявления]
Описатель
[
ctorИнициализатор] [
СпецификацияИсключения]
ТелоФункции
СпецификацияИсключения ::= throw ([
СписокТипов])
СписокТипов ::= [
СписокТипов ,]
ИмяТипа
Из последнего уточнения структуры объявления и определения функции следует, что объявление и определение любой функции может быть дополнено спецификацией исключения. Эта спецификация является дополнительным элементом заголовка функции и состоит из ключевого слова throw и заключённого в круглые скобки списка типов. При этом пустой список типов эквивалентен полному отсутствию спецификации исключения.
Назначение спецификации исключения мы обсудим позже, а пока - демонстрация особенностей работы механизма управления исключениями.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий