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

Previous  Top  Next

    
 

 

 

Автор: Eryk

 

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

 

Code:

{Секция 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.

 

©Drkb::02585

       

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