//*************************************************************************
interface ExceptionTest 'Тестирования (система исключений)' EscClose, Cyan;
create view
as select
*
from
Abonents
;
File aFile;
exception ExBeokall;
exception ExBeAllOk (ExBeOkAll), ExStop;
//-------------------------------------------------------------------------
procedure ExceptionsInVip;
begin
_try {
Message ('Счас будет исключение',0);
delete from Abonents
where Abonents.OfficeNo = 0;
Abonents.OfficeNo:= 0;
insert Abonents;
insert Abonents;
}
_except
on ExDataBase : Message ('Исключение ExDataBase',0);
_finally
Message ('Выход после обработки исключения',0);
end;
//-------------------------------------------------------------------------
procedure ExceptionsFile;
begin
_try {
aFile.OpenFile ('c:\12345\777.999', stCreate);
Message ('НЕ ДОЛЖНО БЫТЬ (Работа в _try-блоке после исключения) 1',0);
}
_except
on ExPathNotFound : Message ('1. Нормально (Исключение ExPathNotFound)',0);
on ExFile : Message ('НЕ ДОЛЖНО БЫТЬ (Исключение ExFile) 1',0);
_finally
aFile.Close;
DeleteFile ('c:\777.999');
_try {
aFile.OpenFile ('c:\777.999', stOpenRead);
Message ('НЕ ДОЛЖНО БЫТЬ (Работа в _try-блоке после исключения) 2',0);
}
_except
on ExFileNotFound : Message ('2. Нормально (Исключение ExFileNotFound)',0);
on ExFile : Message ('НЕ ДОЛЖНО БЫТЬ (Исключение ExFile) 2',0);
_finally
aFile.Close;
_try {
aFile.OpenFile ('c:\777.999', stCreate);
Message ('3. Нормально (Create файл "c:\777.999")',0);
aFile.writeln ('Проверка записи');
Message ('4. Нормально (запись строки)',0);
aFile.seek (0);
Message ('5. Нормально (seek)',0);
var aStr : String;
aFile.Readln (aStr);
Message ('6. Нормально (readln)',0);
if aStr <> 'Проверка записи' then
Message ('НЕ ДОЛЖНО БЫТЬ (прочиталась не та строка) 4',0);
var l : Integer;
Message ('Счас будет исключение',0);
aFile.Read (l);
Message ('НЕ ДОЛЖНО БЫТЬ (ожидалось исключение) 5',0);
}
_except
on ExFileReadError : Message ('7. Нормально (Исключение ExFileReadError)',0);
on ExFile : Message ('НЕ ДОЛЖНО БЫТЬ (Исключение ExFile) 3',0);
_finally {
aFile.Close;
DeleteFile ('c:\777.999');
};
_try {
aFile.OpenFile ('c:\777.999', stOpen);
aFile.seek (aFile.GetSize);
Message ('9. Нормально (файл создан и открыт)',0);
}
_except
on ExFileNotFound : {
aFile.OpenFile ('c:\777.999', stCreate);
Message ('8. Нормально (Исключение ExFileNotFound)',0);
_Retry;
};
on ExFile:
Message ('НЕ ДОЛЖНО БЫТЬ (Исключение ExFile) 4',0);
_finally {
aFile.Close;
DeleteFile ('c:\777.999');
};
end;
//-------------------------------------------------------------------------
handleEvent
cmInit:
{
Message ('Test!',0);
ExceptionsFile;
ExceptionsInVip;
Message ('Тест прошел !',0);
};
end; // handleevent
end. // Interface AbonentsDebug