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

Материал из DRKB

Перехват ошибок DBEngine[править | править код]

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


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.



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