Програміст може створити власний клас обробки виключень, оголосивши його нащадком Exception або будь-якого іншого стандартного класу (цим іншим найчастіше буває клас EAbort). Оголошення нестандартного класу має сенс тільки тоді, коли вам необхідно навчити програму розпізнавати некоректні набори даних і відповідним чином на них реагувати.
Нехай, наприклад, у програмі використовується цикл введення цілочисельних значень з текстового файлу, їх перевірки та перетворення. Перевірка полягає у простому контролі невід’ємності чергового числа після введення і його додатності після перетворення. Перед перевіркою необхідно отримати рядок з файлу (тут може виникнути помилка EinOutError) і перетворити її в цілу величину (тут можлива помилка EConvertError); після перевірки здійснюється обробка величини, в процесі якої може виникнути помилка EIntError.
Створимо новий клас EIntCheckError і будемо порушувати виключення цього класу при виявленні помилки в даних:
type EIntCheckError = class(EAbort) end;
var
F: TextFile; S: String; k: Integer;
begin
try
Reset(F); // Тут можлива помилка EinOutError
// Цикл ввода-контролю-перетворення
while not EOF(F) do begin
ReadLn(F,S);// тут можлива помилка EinOutError
// Перетворимо символи в число
k := StrToInt(S); // Можлива помилка EConvertError
if k < 0 then
raise EIntCheckError.Create(‘від’ємне число');
if k <= 0 then
raise EIntCheckError.Create('He додатнє число');
end; except
on E: EIntCheckError do ShowMessage(E.Message) ;
on EInOutError do
ShowMessage('Некорректна файлова операція');
on EConvertError do
ShowMessage('Помилка в записі числа');
on EIntError do ShowMessage('Помилка перетворення');
end; end;