Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.13;
Скачать: CL | DM;

Вниз

"Глобальный" перехват исключений   Найти похожие ветки 

 
Rav   (2005-10-19 20:55) [0]

Доброго времени суток, уважаемые!
Суть проблемы такова: есть программа для работы с БД, при работе естественно могут возникать различные исключения, которые обрабатываются в разных местах и по разному. Все было прекрасно, пока к данной проге я не прикрутил журнал работы. Возникла проблема: как "перехватить" любое (или почти любое, меня болше интересуют БД) исключение, возникающее в процессе работы программы, но не обрабатывать его, а просто записать сообщение в журнал работы, а затем передать его дальше, "по месту назанчения"?
Может быть есть ссылки на статьи. где почитать по теме? ... я не нашел :(

Заранее спасибо за помощь?


 
Sam Stone ©   (2005-10-19 21:54) [1]

Application.OnException


 
Rav   (2005-10-19 22:09) [2]


> Application.OnException

Не подходит :( Уже пытался :(
Application.OnException обрабатывает исключения, не перехваченные "местными" обработчиками, а мне нужно перехватить ДО "местной" обработки, а затем вернуть туда же.


 
Rav   (2005-10-19 22:17) [3]

Например: ошибку при удалении данных из таблицы Application.OnException в следующем куске кода "не увидит" никогда:

     try
       DbGrid.DataSource.DataSet.Delete;
       AddToDbLog(DbGrid.DataSource.DataSet.Tag, urUser.intUserId, Format(logRefDel, [Self.Caption, recID, recName]));
     except
       on E: Exception do ErrorDeleteMessage(DbGrid.DataSource.DataSet.Name, E);
     end;

Проблему решить в одном данном месте проще некуда: добавить еще AddToDbLog в блоке обработки. Беда только - таких мест ой как много, прога довольно большая :(


 
TuborgBeer   (2005-10-19 22:41) [4]


> Rav   (19.10.05 22:17) [3]
>
> Например: ошибку при удалении данных из таблицы Application.
> OnException в следующем куске кода "не увидит" никогда:


Неправильно мыслишь:
try
      DbGrid.DataSource.DataSet.Delete;
      AddToDbLog(DbGrid.DataSource.DataSet.Tag, urUser.intUserId, Format(logRefDel, [Self.Caption, recID, recName]));
    except
      on E: Exception do
   begin
      ErrorDeleteMessage(DbGrid.DataSource.DataSet.Name,
E);
      raise;
   end;

    end;


 
Rav   (2005-10-20 06:34) [5]

не совсем выход - опять же: проверять и править все обработчики....
неужели нет способа? :(


 
ЮЮ ©   (2005-10-20 07:06) [6]

>неужели нет способа ? :(
способа изменить поведение программы, не переписывая кода?
Естественно, нет!!!
Кроме как писать сразу правильно.


 
Lin7 ©   (2005-10-20 10:43) [7]


> Rav   (20.10.05 06:34) [5]
> не совсем выход - опять же: проверять и править все обработчики.
> ...
> неужели нет способа? :(

Компонент ExWatcher тебя выручит. :)


 
serthgadfhw   (2005-10-20 11:18) [8]

http://sourceforge.net/project/showfiles.php?group_id=47514


 
Rav   (2005-10-20 20:16) [9]


> Кроме как писать сразу правильно.

Правильно? Сразу все не предусмотришь....

И все же я нашел способ облегчить себе задачу...
Во всех обработчиках я использовал функцию вывода сообщения - в нее и встроил указатель на процедуру записи в лог. А для необработанных - OnException.



Страницы: 1 вся ветка

Текущий архив: 2005.11.13;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.024 c
11-1111063036
Ал
2005-03-17 15:37
2005.11.13
Как использовать TSmoothDIB


2-1129277163
ZZZ
2005-10-14 12:06
2005.11.13
DBLookupComboBox


6-1121961178
Hkr
2005-07-21 19:52
2005.11.13
Программирование NetBIOS


2-1130001463
qwerty2k3
2005-10-22 21:17
2005.11.13
Координаты на рабочем столе.


1-1130231400
VID
2005-10-25 13:10
2005.11.13
OleContainer поднимает экспешн в обработчике OnChange !





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский