Компьютер - это электронное устройство, которое не заменит человека до тех пор, пока не научится смеяться над шутками босса и сваливать свои собственные ошибки на соседний компьютер.
Ошибки общего характера, типа Key Violation или конфликты блокировки лучше
всего обрабатывать в обработчике события Application.OnException
...например:
{Секция Interface}procedure HandleException(Sender: TObject; E: Exception);
...
{Секция Implementation}procedure TForm1.HandleException(Sender: TObject; E: Exception);
var
err: DBIResult;
beginif E is EDBEngineError thenbegin
err := (E as EDBEngineError).errors[(E as EDBEngineError).errorcount -
1].errorcode;
if (err = DBIERR_KEYVIOL) then
showMessage('Ошибка Key violation!')
elseif (err = DBIERR_LOCKED) then
showmessage('Запись блокирована другим пользователем')
elseif (err = DBIERR_FILELOCKED) then
showmessage('Таблица блокирована кем-то еще')
else
showmessage('Другая ошибка DB')
endelse
showmessage('Упс!: ' + E.Message);
end;
...'инсталлировать' обработчик исключений можно так:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.onException:=HandleException;
end;
Для использования предопределенных констант ошибок ('DBIERR_etc.'), вам
необходимо включить DBIERRS в список используемых модулей. Полный список кодов
ошибок при работе с базами данных вы можете найти в файле DBIERRS.INT,
расположенном в каталоге :\DELPHI\DOC.
Статья Перехват ошибок DBEngine раздела Базы данных Ошибки БД может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.