Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 724

•  TDictionary Custom Sort  6 725

•  Fast Watermark Sources  6 508

•  3D Designer  9 446

•  Sik Screen Capture  6 839

•  Patch Maker  7 289

•  Айболит (remote control)  7 231

•  ListBox Drag & Drop  6 094

•  Доска для игры Реверси  97 849

•  Графические эффекты  7 407

•  Рисование по маске  6 704

•  Перетаскивание изображений  5 560

•  Canvas Drawing  5 942

•  Рисование Луны  5 719

•  Поворот изображения  5 180

•  Рисование стержней  3 786

•  Paint on Shape  2 966

•  Генератор кроссвордов  3 907

•  Головоломка Paletto  3 105

•  Теорема Монжа об окружностях  3 915

•  Пазл Numbrix  2 578

•  Заборы и коммивояжеры  3 372

•  Игра HIP  2 313

•  Игра Go (Го)  2 212

•  Симулятор лифта  2 623

•  Программа укладки плитки  2 205

•  Генератор лабиринта  2 723

•  Проверка числового ввода  2 360

•  HEX View  2 698

•  Физический маятник  2 374

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

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








Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте