Клас Exception.
Клас Exception являєть батьківським класом для всіх класів винятків. Цей клас оголошений в модулі SysUtils.
В класі оголошено два поля:
Fmessage: string;
FhelpContext:Integer;
І визначено 8 конструкторів для створення об’єкта. За їх допомогою можна прочитати тексове повідомлення із ресурса, відформатувати його, зв’язати виняток з контекстом довідкової служби.
Також клас використовує дві властивості за допомогою яких здійснюється доступ до полів класу це
HelpContext i Message.
В Delphi визначені стандартні класи винятків, які можуть використовуватись в обробнику винятків.
Важливо пам’ятати, що шукається самий перший із можливих декількох обробників винятків.
При винекнені виняткової ситуації об’єкти класів обробників створюються і знищуються автоматично. Якщо програміст забажає використати поля або методи класу-обробника явно, він повинен назвати автоматично створений об’єкт. Для цього перед іменем класу ставиться ідентифікатор і двікрапки:
On er:EdivByZero do er.----;
-EdivByZero – клас пов’язаний з помилкою при цілочисленому ділені на 0.
Для стандартних класів це дозволить використати властивість Message з стандартним повідомленням про помилку.
Винятком є лише клас EinOutError, в якому є цілочислена властивість ErrorCode з кодом помилки введення/виведення.
Для виведення повідомлень можливо використати такий спосіб:
ShowMessage(s:string);
ІІ.Виклик винятків.
В деяких ситуаціях програмісту потрібно ініціювати власний виняток. Для цього використовується зарезервоване слово raise. Якщо це слово зустрінеться в секції try...exception або try...finally, негайно починають свою роботу відповідно except...end i finally...end, рахується що даний захищений блок на поточному рівні вложеності завершив свою роботу і керування передається вищестоячому рівню.
Слово raise викликає виняток самого загального класу Exception. Якшо програміст бажає викликати виняток конкретного типу (не важно стандартного або власного), він повинен явно вказати клас створюваного в цей момент об’єкту шляхом виклику його конструктора. Наприклад наступний оператор викличе помилку введення виведення:
Raise EinOutError.Create(‘Помилка!’)
ІІІ.Створення власного класу.
Програміст може створити власний клас обробки винятків, оголосивши його нащадком Exception або будь-якого стандартного класу (цим будь-яким класом найчастіше буває клас Eabort).
Приклад:
Type
EkError = class(Eabort)
End;
Тепер можна використати його: