Студопедия

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника



Синтаксис исключений. Перехват исключений




Читайте также:
  1. O не работает перехват звонка
  2. Генерация исключений
  3. ЛЕКСИКА, МОРФОЛОГИЯ, СИНТАКСИС СТИЛЯ
  4. Локальное программирование на языке JavaScript. Способы включения в документ - внешние, внутренние и локальные скрипты. Синтаксис JavaScript. Переменные, операторы и функции.
  5. Методика преподавания синтаксиса.
  6. Методика работы над элементами синтаксиса в нач. школе
  7. Определение собственных классов исключений
  8. Определение типа документа DTD. Валидные XML-документы. Синтаксис DTD, объявления элементов и списков атрибутов.
  9. Синтаксис
  10. Синтаксис

Ключевое слово try служит для обозначения контролируемого блокакода, в котором может генерироваться исключение. Блок заключается в фигурные скобки:

 

try{

}

 

Генерация (порождение) исключенияпроисходит по ключевому слову throw, которое употребляется либо с параметром, либо без него:

throw [ выражение ];

Тип выражения, стоящего после throw, определяет тип порождаемого исключения. При генерации исключения выполнение текущего блока прекращается, и происходит поиск соответствующего обработчика и передача ему управления.

Обработчики исключенийначинаются с ключевого слова catch, за которым в скобках следует тип обрабатываемого исключения. Синтаксис обработчиков напоминает определение функции с одним параметром — типом исключения.

Существует три формы записи:

 

Catch (тип имя) { ... /* тело обработчика */ }

Catch (тип) { ... /* тело обработчика */ }

Catch (...) { .. /* тело обработчика */ }

 

Первая форма применяется, когда имя параметра используется в теле обработчика для выполнения каких-либо действий — например, вывода информации об исключении.

Вторая форма не предполагает использования информации об исключении, играет роль только его тип.

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

 

Когда с помощью throw генерируется исключение, функции исполнительной библиотеки C++ выполняют следующие действия:

1. Создают копию параметра throw в виде статического объекта, который существует до тех пор, пока исключение не будет обработано;

2. В поисках подходящего обработчика раскручивают стек, вызывая деструкторы локальных объектов, выходящих из области действия;

3. Передают объект и управление обработчику, имеющему параметр, совместимый по типу с этим объектом.

 

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

Обработчик считается найденным, если тип объекта, указанного после throw:

· тот же, что и указанный в параметре catch (параметр может быть записан в форме Т, const Т. Т& или const Т&. где Т— тип исключения);



· является производным от указанного в параметре catch (если наследование производилось с ключом доступа public);

· является указателем, который может быть преобразован по стандартным правилам преобразования указателей к типу указателя в параметре catch.

 

Таким образом, механизм исключений позволяет корректно уничтожать объекты при возникновении ошибочных ситуаций. Поэтому выделение и освобождение ресурсов полезно оформлять в виде классов: конструктор которых выделяет ресурс, а деструктор освобождает.

 


Дата добавления: 2015-04-18; просмотров: 9; Нарушение авторских прав







lektsii.com - Лекции.Ком - 2014-2021 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты