КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Відмінності в роботі блоків обробки виключень
На рис. 6.1 представлені три варіанти фрагмента програми, в якій відбувається помилка часу виконання. Кожен з фрагментів складається з трьох процедур, які послідовно викликають одна одну. Помилка відбувається в третій. На рисунку показані три варіанти роботи в залежності від виду блоку обробки, що використовується або без нього. У першому варіанті обробка помилки не проводиться (чого в принципі не повинно бути в коректно створеній програмі). Другий варіант дозволяє локалізувати виняток, тобто не дати йому вийти за межі будь-якого фрагменту програми. Рисунок 6.1. Механізм обробки виключних ситуацій.
Завдяки цьому залишається можливість продовження нормального виконання програми. Далі ми зупинимось більш докладніше на кожному з варіантів. Програма на схемі «» не обробляє виняткову ситуацію і працює таким чином. Спочатку виконується Процедура 1 до моменту виклику Процедури 2. Шлях коректного (безпомилкового) виконання програми показаний суцільною лінією. Потім Процедура 2 виконується до моменту виклику Процедури 3. Процедура 3 виконується, і в ній відбувається помилка, що тягне автоматичне створення об'єкта виключення і пошук обробника, який відповідає даному виключенню. Так як Процедура 3 не перетворює виняткову ситуацію, то вона завершується, управління передається в викликану нею Процедуру 2, і вже там починається пошук обробника виключення (напрямок потоку виконання при виникненні виняткової ситуації показано пунктирною лінією). Однак Процедура 2 також не містить обробника винятків, відповідно, вона буде перервана, а управління перейде до Процедури 1. Процедура 1 не містить обробника помилок, отже, також буде перервана. В результаті фрагмент програми, викликавший але не обробивший помилку, взагалі втрачає керування. Тепер розглянемо схему «б». Програма, представлена на ній працює аналогічно до схеми «а» до моменту повернення управлення в Процедуру 2 при виникненні виключення. Виклик процедури 3 в Процедурі 2 був зроблений з блоку обробки Try.. Except, тому управління передається в секцію Except цього блоку, після закінчення якої фрагмент програми продовжує своє нормальне виконання. На схемі «в» представлений фрагмент програми, що має блок обробки виключень Try.. Finally. Його робота аналогічна попередньому випадках, за винятком того, що після завершення блоку Finally.. End, Процедура 2 не продовжуватиме свою роботу, а завершиться, і управління перейде в Процедуру 1. Далі фрагмент буде працювати аналогічно представленому на рисунку «а».
Дата добавления: 2014-01-04; Просмотров: 433; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |