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

Вниз

Мониторинг исключений   Найти похожие ветки 

 
Asdor ©   (2004-05-26 10:22) [0]

Здравствуйте, мастера. Подскажите пожалуйста, каким образом в программе можно сделать мониторинг возникаемых в ней исключений. Т.е. что исключение возникло по такому-то адресу. у него такой-то код ошибки и такое-то сообщение. Это исключение потом обработано в секции Except... end и благополучно убилось, или возбуждено снова.
Насколько я понимаю, что-то подобное и с записью в лог делал ExceptionMagic, но его у меня сейчас нет и скачать не могу (не нашел ни в яндексе ни в гугле, а сайт разработчика не работает...).

Спасибо.


 
Тимохов ©   (2004-05-26 10:40) [1]

Не очень понятно, зачем писать в лог исключение, которое "благополучно убилось"?

ИМХО:
1. Если убилось, ну и фиг с ним - зачем он в логе - такова логика работы (т.е. прибиваемое исключение не ошибка, а что-то другое), т.к. ошибочные исключения не прибиваются. Если вы прибиваете все исключения, то вы делаете большую ошибку :)))
2. Если не убилось, то оно дойдет до события Application.OnException. Там его и пишите в лог.


 
Asdor ©   (2004-05-26 10:50) [2]

В Application.OnException приходят не все исключения. В частности не приходят исключения из других потоков и исключения Com-объектов.
На данный момент я использую общего наследника для всех моих ком-объектов, где переопределяю SafeCallException, и там пишу в лог (соответсвенно для "не моих" COM-объектов это работать не будет...). Для обработки потоковых исключений - использую обертку на потоковую функцию. Для обработки assert - обертку на AssertErrorProc.
А ведь наверняка можно каким нибудь образом логировать все исключения из одного места, например перехватив вызов каких-нибудь системных процедур возбуждения/уничожения исключений. Вот этого и хотелось бы добиться.


 
Тимохов ©   (2004-05-26 11:00) [3]

в мониторинге вообще всех исключений я не силен.

Совет. Задайте этот вопрос в winapi.
Возможно, что как-то можно перехватывать работу с SEH (structure error handling). Имхо такой вопрос наиболее подходит для ответа знатокам winapi.


 
Asdor ©   (2004-05-26 11:18) [4]

Ну вот, ветку уже переместили... :)

Вобще-то не хотелось-бы заморачиваться с SEH. тем более в Delphi исключения хоть и проходят через нее, но далеко в глубинах модуля System и в Implementation - части...

Спасибо за ответы. посмотрим, что скажут в WinApi.


 
Игорь Шевченко ©   (2004-05-26 11:31) [5]

www.delphi-jedi.org, JCL, jcldebug.pas может чем-нибудь помочь.


 
Asdor ©   (2004-05-27 10:11) [6]

Огромное спасибо. Посмотрел. разбираюсь - очень интересно... :)



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

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

Наверх




Память: 0.48 MB
Время: 0.021 c
1-1087460995
besen-ok
2004-06-17 12:29
2004.07.04
Как узнать длину строки типа AnsiString ? (-)


1-1087299814
iat
2004-06-15 15:43
2004.07.04
Как отследить установку/снятие checkbox a в TListView?


3-1086605578
Борис_4
2004-06-07 14:52
2004.07.04
Не работает BDE c Access97 в Delphi 5 на новом компьютере


1-1087449440
Rediska
2004-06-17 09:17
2004.07.04
Процедура поиска. Помогите.


1-1087724542
M@verick
2004-06-20 13:42
2004.07.04
Добрый день всем. У меня при запуске отладчика выскакивает