Советы по Delphi

         

Перехват ошибок 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 beginerr := (E as EDBEngineError).errors[(E as EDBEngineError).errorcount-1].errorcode;if (err = DBIERR_KEYVIOL) thenshowMessage('Ошибка Key violation!')else if (err = DBIERR_LOCKED) thenshowmessage('Запись блокирована другим пользователем')else if (err = DBIERR_FILELOCKED) thenshowmessage('Таблица блокирована кем-то еще')elseshowmessage('Другая ошибка DB')endelseshowmessage('Упс!: '+E.Message);end;

...'инсталлировать' обработчик исключений можно так:

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.onException:=HandleException;end;

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

Eryk [000567]



Содержание раздела