Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Захист виділених ресурсів від зникнення

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Особливість цього блоку полягає в тому, що секція finally… end виконується завжди незалежно від того, відбувається виняткова ситуація чи ні. Якщо який-небудь оператор секції try… finally генерує виняткову ситуацію, то спочатку виконується секція finally … end, звана секцією завершення (звільнення ресурсів), а потім управління передається зовнішньому захищеного блоку. Якщо всі захищаються… Читати ще >

Захист виділених ресурсів від зникнення (реферат, курсова, диплом, контрольна)

Витік ресурсів і захист від нього

Програми, побудовані з використанням механізму виняткових ситуацій, зобов’язані дотримуватися суворих правил розподілу та звільнення таких ресурсів, як пам’ять, файли, ресурси операційної системи.

Уявіть ситуацію: підпрограма розподіляє деякий ресурс, але виняткова ситуація перериває її виконання, і ресурс залишається не звільненим. Навіть подумати страшно, до чого може призвести така помилка: витік пам’яті, файлових дескрипторів, інших ресурсів операційної системи. Отже, ресурси потребують захисту від виняткових ситуацій. Для цього в середовищі Delphi передбачений ще один варіант захищеного блоку:

/ / Запит ресурсу.

try.

/ / Захищаються оператори, які використовують ресурс.

finally.

/ / Звільнення ресурсу.

end;

Особливість цього блоку полягає в тому, що секція finally… end виконується завжди незалежно від того, відбувається виняткова ситуація чи ні. Якщо який-небудь оператор секції try… finally генерує виняткову ситуацію, то спочатку виконується секція finally … end, звана секцією завершення (звільнення ресурсів), а потім управління передається зовнішньому захищеного блоку. Якщо всі захищаються оператори виконуються без помилок, то секція завершення теж працює, але управління передається наступному за нею оператору. Зверніть увагу, що секція finally… end не обробляє виняткову ситуацію, в ній немає ні засобів її виявлення, ні засобів доступу до об'єкта виняткової ситуації.

Логіка роботи оператора try … finally … end.

Рисунок 1.2 Логіка роботи оператора try … finally … end.

Блок try… finally…end володіє ще однією важливою особливістю. Якщо він поміщений в цикл, то виклик із захищеного блоку процедури Break з метою передчасного виходу з циклу або процедур Continue з метою переходу на наступну ітерацію циклу спочатку забезпечує виконання секції finally… end, А потім вже виконується відповідний перехід. Це твердження справедливо також і для процедури Exit (вихід з підпрограми).

Як показує практика, підпрограми часто розподіляють відразу кілька ресурсів і використовують їх разом. У таких випадках застосовуються вкладені блоки try… finally…end:

/ / Розподіл першого ресурсу.

try.

/ / Розподіл другого ресурсу.

try.

/ / Використання обох ресурсів.

finally.

/ / Звільнення другого ресурсу.

end;

finally.

/ / Звільнення першого ресурсу.

end;

Крім того, ви успішно можете комбінувати блоки try… finally…end і try… except…end для захисту ресурсів та обробки виняткових ситуацій.

Показати весь текст
Заповнити форму поточною роботою