БОЛЬШОЙ FAQ ПО DELPHI



Перехват ошибок 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.




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ