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

Советы » Ошибки БД » Перехват ошибок DBEngine

Ошибки общего характера, типа 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, расположенном в каталоге :DELPHIDOC.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com