загрузка...
загрузка...
На головну

Програмний обробник помилок

Дивіться також:
  1. Для спільного використання обробника подій
  2. І виправленням помилок
  3. повідомлень про помилку
  4. Виправлення виявлених помилок. заключні обороти
  5. Як уникнути найбільш поширених помилок
  6. Лекція 13. Робота з файлами. Обробка помилок в Паскаль.
  7. М.3.26. Які види помилок бувають при визначенні показників фізичних властивостей ґрунтів?
  8. Обробка помилок
  9. Визначення способом повторного і бесповторного відбору по генеральної сукупності середньої, граничної і відносної помилок середньої з урахуванням заданого довірчого інтервалу.
  10. Особливості виправлення помилок у податкових деклараціях
  11. Помилок немає
  12. Помилок, виявлених під час перевірки

Begin

Передача об'єктів, пов'язаних з винятковими ситуаціями

Finally

Try

Виконання завершальних дій

On EIntError do

Except

Begin

ShowMessage ( 'Помилка # 22');

raise;

end;

end;

Після видачі повідомлення Помилка # 22 виповниться стандартний обробник помилки EZeroDivide.

З тексту обробника помилки можна генерувати інші виняткові ситуації, наприклад:

try

X: = Y + Z;

raiseEIntOverflow.Create ( 'Можливо переповнювання ");

end;

Якщо при додаванні цілих чисел, що зберігаються в змінних Y і Z, виникне якась арифметична помилка (базовий клас EIntError), то в обробнику цієї помилки буде згенеровано інша виняткова ситуація EIntOverflow, а обробка помилки EIntError завершиться.

У деяких ситуаціях програмісту не потрібен власний обробник помилок, але потрібно, щоб програма гарантовано виконала певні дії, пов'язані, наприклад, із звільненням ресурсів. У такій ситуації зручніше використовувати наступний блок:

try

оператори finally

заключні дії

end;

Заключні дії будуть виконані в будь-якому випадку, незалежно від того, чи виникне виняткова ситуація в операторах частини tryабо, наприклад, виконається спроба виходу з підпрограми за допомогою процедури Exit.

У наступному тексті звільнення пам'яті, виділеної для динамічного масиву DynArr (фінальний оператор присвоювання значення nil),відбудеться незалежно від того, чи успішно створений і оброблений масив DynArr або пам'яті для нього не вистачило:

varDynArr: array ofinteger;

...

SetLength (DynArr, 100000);

...

DynArr: = nil

end;

Коли в програмі виникає виняткова ситуація, спеціальний обробник створює відповідний їй об'єкт. Щоб отримати доступ до цього об'єкта, в описі класу в частині exceptтреба попередньо вказати довільний ідентифікатор:

on E: EIntError do Р;

У разі виникнення помилки EIntError об'єкт відповідного класу буде

збережений в змінної Е (описувати її не треба), до якої можна звертатися, наприклад, для занесення нових значень в її властивості.

У будь-якого класу виняткової ситуації є два властивості: Message, в якому зберігається рядок, що виводиться у вікні повідомлення, і HelpContext, число-ідентифікатор розділу довідкової системи для виведення більш докладної інформації про помилку.

on E: EIntError do

Е.Message: = 'Помилка обчислень';

raise;

end;

Якщо доступ до об'єкта, що описує помилку, треба отримати в частині elseблоку except,де ніякі класи явно не згадуються, можна використовувати функцію ExceptObject, яка повертає такий об'єкт.

За замовчуванням при виникненні виняткової ситуації для її обробки викликається процедура HandleException. Вона перевіряє, обробляє чи додаток подія On Exception. Якщо обробка відсутня, виводиться діалогове вікно, з коротким повідомленням про помилку. Таке вікно можна викликати за допомогою стандартної процедури ShowException, яка отримує в якості параметра об'єкт, що має тип виняткової ситуації:

on E: EIntError do

ShowException (E);

Обробник події On Exception задається явно, за допомогою оператора присвоювання, наприклад в методі створення або активації форми:

procedureTMyForm.FormActivate (Sender: TObject);

OnEZeroDivide do «-- попередня | наступна --» Методика прогнозування возможности Виникнення негативних чінніків в індівідуальній ДІЯЛЬНОСТІ.
загрузка...
© om.net.ua