Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Перехват ошибок DBEngine

01.01.2007

Автор: Eryk

Ошибки общего характера, типа Key Violation или конфликты блокировки лучше всего обрабатывать в обработчике события Application.OnException ...например:

{Секция Interface}
procedure
HandleException(Sender: TObject; E: Exception);
...
 
{Секция Implementation}
procedure TForm1
.HandleException(Sender: TObject; E: Exception);
var
  err
: DBIResult;
begin
 
if E is EDBEngineError then
 
begin
    err
:= (E as EDBEngineError).errors[(E as EDBEngineError).errorcount -
     
1].errorcode;
   
if (err = DBIERR_KEYVIOL) then
      showMessage
('Ошибка Key violation!')
   
else if (err = DBIERR_LOCKED) then
      showmessage
('Запись блокирована другим пользователем')
   
else if (err = DBIERR_FILELOCKED) then
      showmessage
('Таблица блокирована кем-то еще')
   
else
      showmessage
('Другая ошибка DB')
 
end
 
else
    showmessage
('Упс!: ' + E.Message);
end;
 
...'инсталлировать' обработчик исключений можно так:
 
procedure TForm1
.FormCreate(Sender: TObject);
begin
 
Application.onException:=HandleException;
end;

Для использования предопределенных констант ошибок ('DBIERR_etc.'), вам необходимо включить DBIERRS в список используемых модулей. Полный список кодов ошибок при работе с базами данных вы можете найти в файле DBIERRS.INT, расположенном в каталоге :\DELPHI\DOC.

Взято с https://delphiworld.narod.ru