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

Различия в работе блоков обработки исключений



На рис.15 представлены три варианта фрагмента программы, в которой происходит ошибка времени выполнения. Каждый из фрагментов состоит из трех процедур, последовательно вызывающих друг друга. Ошибка происходит в третьей. На рисунке показаны три варианта работы в зависимости от вида используемого блока обработки или без него.

В первом варианте обработка ошибки не производится (чего в принципе не должно быть в корректно созданной программе). Второй вариант позволяет локализовать исключение, то есть не дать ему выйти за пределы какого-либо фрагмента программы. Благодаря этому остается возможным продолжение нормального выполнения программы. Далее мы остановимся более подробнее на каждом из вариантов.

Программа на схеме «а» не обрабатывает исключительную ситуацию и работает следующим образом. Сначала выполняется Процедура I до момента вызова Процедуры 2. Путь корректного (безошибочного) выполнения программы показан сплошной линией. Затем Процедура 2 выполняется до момента вызова Процедуры 3. Процедура 3 выполняется, и в ней происходит ошибка, что влечет автоматическое создание объекта исключения и поиск обработчика, соответствующего данному исключению.

Так как Процедура 3 не обрабатывает исключительную ситуацию, то она завершается, управление передается в вызвавшую ее Процедуру 2, и уже там начинается поиск обработчика исключения (направление потока выполнения при возникновении исключительной ситуации показано пунктирной линией). Однако Процедура 2 также не содержит обработчика исключений, следовательно, она будет прервана, а управление перейдет к Процедуре 1. Процедура I не содержит обработчика ошибок, следовательно, также будет прервана. В результате фрагмент программы, вызвавший, но не обработавший ошибку, вообще теряет управление.

Теперь рассмотрим схему «б». Программа, представленная на ней, работает аналогично схеме «а» до момента возврата управления в Процедуру 2 при возникновении исключения. Вызов Процедуры 3 в Процедуре 2 был сделан из блока обработки Try..Except, поэтому управление передается в секцию Except этого блока, после окончания которой, фрагмент программы продолжает свое нормальное выполнение.

На схеме «в» представлен фрагмент программы, имеющий блок обработки исключений Try..Finally. Его работа аналогична предыдущему случаю, за исключением того, что после завершения блока Finally..End, Процедура 2 не будет продолжать свою работу, а завершится, и управление перейдет в Процедуру 1. Далее фрагмент будет работать аналогично представленному на рисунке «а».





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



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