Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
все ответы.docx
Скачиваний:
8
Добавлен:
26.09.2019
Размер:
2.71 Mб
Скачать
  1. Блок try … except

Назначение – специализированная реакция в соответствии с типом возникшего исключения. Синтаксис:

try

// защищаемый блок

except

// действия по обработке исключения

end;

Работа: В защищаемом блоке могут присутствовать любые операторы языка Delphi, по достижении программой блока они будут выполняться последовательно. Если при выполнении очередного оператора защищаемого блока возникнет исключение, управление будет немедленно передано в блок обработки except. Если исключений не возникает, следующими будут выполняться операторы после end. Блок except может иметь два принципиально различающихся вида:

    1. Последовательность обычных операторов

Они будут выполнены тогда и только тогда, когда в защищаемом блоке возникнет какое бы то ни было исключение. После выполнения всех этих операторов исключение считается обработанным, и выполнение продолжается со следующего оператора после слова end завершающего блок try … except.

    1. Операторы выбора исключений.

Такой вид обеспечивает избирательную специфическую реакцию на различные классы исключений. В таком случае блок except состоит из произвольного количества предложений вида:

on [<имя объекта-исключения>:]<имя класса-исключения> do <оператор>;

В случае возникновения исключительной ситуации, в соответствии с классом исключения последовательным просмотром выбирается первый (только один) обработчик, который может его перехватить. Обработчик перехватывает исключения не только класса, указанного после on, но и любого его потомка. Таким образом, правильным порядком перечисления является тот, при котором сначала перечисляются исключения-потомки, а затем исключения-предки.

  1. Блок try … finally

Назначение – выполнение обязательных действий по освобождению ресурсов, захваченных в защищаемом блоке, не зависящих от факта возникновения ошибки. Такими ресурсами могут быть динамически распределяемые в памяти объекты, открытые файлы, оконные и другие ресурсы Windows и т.д.

Синтаксис:

try

// защищаемый блок

finally

// действия по корректному завершению защищаемого блока

end;

Работа: Выполняются операторы защищаемого блока. При возникновении исключения или после завершения блока без исключений, выполняются операторы блока завершения finally. После выполнения операторов блока finally исключение (если таковое возникало в защищаемом блоке) не считается обработанным и переносится в вышестоящий блок обработки исключений. Если же исключений не возникает, то выполнение продолжается со следующего оператора после end;

ОБРАБОТКА ИСКЛЮЧЕНИЙ ВО ВЛОЖЕННЫХ БЛОКАХ:

Иногда Вы хотите построить конструкцию подобно этому: Try ... Except ... Finally ... End; где исключения заманены в ловушку и обработаны, но в любом случае, набор инструкций очистки будут выполнены. Это может быть достигнуто с помощью вложенных инструкций Try:

Try Try ... Except ... End; Finally ... End;

вы можете определить тип ошибки, которая произошла, при использовании универсальной обработки особых ситуаций - On E:Exception Do. E это указатель на объект исключения. TRY – оператор генерации исключения.