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

Автор: 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.


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

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...