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

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

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

{/codecitation}

Добавить комментарий