Исключения

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
makvell
Сообщения: 6
Зарегистрирован: 05 дек 2005, 23:45

Исключения

Сообщение makvell » 06 май 2006, 00:33

Как отловить исключение в программе на Delphi, если в БД оно создано, и возбуждается в процедуре, например, на складе 10 шапок, пользователь пытается взять 11, возбуждается исключение, как красиво показать это сообщение у клиента?
Заранее спасибо.

ivl
Сообщения: 59
Зарегистрирован: 22 мар 2006, 15:29

Сообщение ivl » 06 май 2006, 01:09

Как вариант, если необходимо обработать исключене возникающее например при редактировании в DBGrid (без явной обработки метода Post), можно использовать
1. Компонент TApplicationEvents, а именно его обработчик OnException.

Код: Выделить всё

procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
begin;
  // Здесь писать обработку, например:
  if E is EDatabaseError then
  begin
     if E.Message =  ....
  end
end;
В него, как видно, передаётся исключение E.
Останется проверить, что это за исключение (от базы или какое-либо другое) и потом проверить E.Message на предмет присутствия в теле текста исключения которое нужно обработать.
Это, на мой взгляд, не лучший способ.
2. У компонета потомка TDataSet который используется (например TIBTable) обрабатывать OnPostError.
3. Или, как обычно,

Код: Выделить всё

...
try
  table1.post;
except
  on E:EDatabaseError do
  begin
     if E.Message= .......
  end;
end;

Ответить