Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как глобально отлавливать исключения? [D7, WinXP]


Mx ©   (2005-07-22 18:33:00) 

Допустим есть пачка модулей, просто исходных модулей. Не факт, что они будут использоваться в проекте, где есть TApplication. Так вот существует ли способ написать (зарегистрировать) обработчик, куда будут направляться все исключения? Переменная ExceptProc похоже не подходит, так как при наличии TApplication в ExceptProc ничего не придет. Об этом сказано в справке и уже проверено. Перелазил кучу модулей RTL и VCL и совсем запутался.

Дело в том, что у меня куча разных потоков и разных объектов в этих потоках, какие-то шарятся всеми, какие-то потоко-зависимы, а вот систему обработки исключений хотелось бы сделать единой, к тому же необходим четкий отлов не только "моих" ошибок (raise, которые я написал), но и остальных.

Возможно ли такое?


Mx   (2005-07-22 19:06:00) [1]


> Гаврила ©   (22.07.05 18:55) [8]
> короче, фигню сказал, пардон

Ха, я за последний месяц несколько раз сюда заходил и по ответам получалось, что я в основном этим и занимаюсь. Надо за город, на отдых... сори за офф


Mx   (2005-07-22 18:55:00) [2]


> Гаврила ©   (22.07.05 18:53) [4]
> Classes.ApplicationHandleException

А если ее захватить конструктор TApplication? Гарантировано ли он загрузится раньше моего пакета?


Гаврила   (2005-07-22 18:55:00) [3]

Ккак говорится "поспешишь - штаны насмешишь"
короче, фигню сказал, пардон


Mx   (2005-07-22 18:54:00) [4]


> Digitman ©   (22.07.05 18:50) [3]

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

А так получается, что универсального способа все-таки нет?


Гаврила   (2005-07-22 18:53:00) [5]

попробуй
Classes.ApplicationHandleException


Lexer   (2005-07-22 18:53:00) [6]

>Mx ©   (22.07.05 18:45) [2]
>юзать в нем напрямую Application и событие, которое может быть переназначено (а тогда еще и TApplicationEvents понадобится) я думаю неправильно.


главное работает, и как вариант вполне приемлен


Digitman   (2005-07-22 18:50:00) [7]


> Дело в том, что у меня куча разных потоков


вот и заключай тело поточной ф-ции в try..except

ничто этому не мешает, и это вовсе не сложно

все непрогнозируемые тобой исключения в потоках ты сможешь протоколировать, и процесс твой не рухнет при этом.


Mx   (2005-07-22 18:45:00) [8]

Если бы все было так просто! Это вообще-то пакет, причем для CLX, юзать в нем напрямую Application и событие, которое может быть переназначено (а тогда еще и TApplicationEvents понадобится) я думаю неправильно.


Lexer   (2005-07-22 18:40:00) [9]

Application.OnException


Наверх

Титульная страница Поиск, карта сайта Написать письмо