Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Блок обработки исключений Try..Finally



Блок обработки исключений Try..Except может быть использован в ситуациях, когда известно, как именно нужно реагировать на произошедшую ошибку, даже если программа и не пытается установить ее тип (не используются конструкции On..Do..Else). Например, в предыдущем примере совершенно не важно, почему произошло исключение, а важно только то, что результат функции не вычислен, и функция не может возвратить результат своей работы. Соответственно, вне зависимости от типа ошибки, функция должна вернуть значение NaN.

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

Try

«Фрагмент программы 1>

Finally

<Фрагмент программы 2>

End;

При таком способе организации обработки исключений сначала производится попытка выполнить Фрагмент программы 1. В случае успешного его выполнения, управление передается Фрагменту программы 2, и блок обработки заканчивается.

Если в Фрагменте программы 1 возникает исключительная ситуация, то его выполнение обрывается, но управление все равно передается Фрагменту программы 2. После выполнения Фрагмента программы 2 исключение выбрасывается заново и происходит его обработка по обычным правилам, например, с помощью блока обработки исключений Try..Except.





Дата публикования: 2014-11-02; Прочитано: 428 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...