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

Вниз

Как отлавливать все Exceptionы программы?   Найти похожие ветки 

 
Zelius ©   (2003-05-07 17:17) [0]

Всем привет! Мне дали готовый проект, после того как я его посмотрел, волосы встали дыбом! То как там обращаются с исключениями - заслуживает обращения в Гаагский трибунал! В итоге, зачастую бывает, что программа глючит потому, что какое-то исключение осталось в недрах кода и не показывается пользователю. Проект не маленький, поэтому все места в нем поймать архи трудно! Есть ли способ, отлавливать создание исключений или перехватывать их на другом этапе? Что бы ни одно, даже отработанное try/except исключение не проскользнуло мимо меня :) Спасибо!


 
jel ©   (2003-05-07 17:28) [1]

Ловить необработанные исключения можно в Application.OnException, а вот обработанные в try .. except - наверно уже никак.


 
pusrg ©   (2003-05-07 17:32) [2]

А если поставить галочку в Debugger Options - Stop on Delphi Exceptions?

Правда при этом будут вылазить исключения не только внутри кода проекта :).


 
Zelius ©   (2003-05-07 17:54) [3]


> jel © (07.05.03 17:28)

Интересует именно отлов обработанных исключений! С необработанными то все понятно...


> pusrg © (07.05.03 17:32)

надо исключения отлавливать не только из Дельфи...


 
VAleksey ©   (2003-05-07 18:05) [4]

Search \ Find in Files \ All files in project

ищем слово "try"
Убираем его везде.
:-))


 
kull ©   (2003-05-07 18:08) [5]


> VAleksey © (07.05.03 18:05)

только try - finally случайно не убери...


 
Zelius ©   (2003-05-07 18:29) [6]


> VAleksey © (07.05.03 18:05)

Нет, спасибо, это будет бомба замедленного действия :)


 
VAleksey ©   (2003-05-07 18:34) [7]

Ну странные вы ребята. :-))
В чем бомба - то? Ты же можешь сам прогнать проект. Не надо его в таком виде юзеру отдавать.


 
Zelius ©   (2003-05-07 18:41) [8]


> VAleksey © (07.05.03 18:34)

Бомба в том, что есть места расчитанные на эксепшоны, если и там убрать, то эти места перестанут работать. Я хотел что-то типа хука поставить, что бы не менять основной код. Пока вот нашел RaiseExceptionProc...


 
Cobalt ©   (2003-05-08 00:28) [9]

Может, подпатчить слегка в Classes.pas базовый класс исключений, чтоб он лог вел?
Хотя, думаю, тебе ведь интересует место в коде?
Тогда Find\FindNext.


 
Zelius ©   (2003-05-08 10:30) [10]


> Cobalt © (08.05.03 00:28)

Не хочется менять стандартный модуль...

RaiseExceptionProc пока работает. Правда не знаю, все ли исключения через него проходят...


 
Digitman ©   (2003-05-08 12:21) [11]

>Zelius

Ты ни слова не сказал о мультипоточности, возможно реализуемой в приложении.

Application.OnException() дает перехват необраб.исключений только в осн.код.потоке процесса приложения. Исключения же, потенциально возникающие в иных кодовых потоках, будучи необработанными "на месте" (try..except), ведут к худшем случае к краху процесса (в лучшем - дальнейшее поведение процесса непредвидимо). И никакой Application.OnException() не поможет.


 
Erik Ivanov   (2003-05-08 14:32) [12]

Возми JCLDebug он у меня все обработаные и необработаные exception отлавливает и отправляет почтой.


 
Zelius ©   (2003-05-12 12:49) [13]


> Digitman © (08.05.03 12:21)

Это я понимаю, и знаю, что TApplication потоко-небезопасный, поэтому ищу другие пути перехвата исключений.

> Erik Ivanov (08.05.03 14:32)

Я правильно понял, что даже если исключение было обработано try/except, то JCLDebug его все равно отлавливает?


 
Zelius ©   (2003-05-12 13:54) [14]


> Erik Ivanov (08.05.03 14:32)

Не подскажешь где можно взять хелп толковый по JclDebug? Лазяю по тому что у меня есть и не вижу пояснений к статьям :( Не пойму, как сделать перехват всех исключений, а не только не обработанных...


 
Digitman ©   (2003-05-12 14:20) [15]


> Zelius



> Это я понимаю, и знаю, что TApplication потоко-небезоп


При чем здесь "потоконебезопасность" VCL ? Речь идет о TLS (thread local storage), индивидуальном для каждого кодового потока процесса. В TLS каждого конкретного кодового потока как раз и хранится (кроме всего прочего) инф-ция об исключении в этом потоке. TApplication же при глобальной обработке исключения по OnException() обращается к своему TLS. Но этот TLS имеет отношение только к осн.код.потоку процесса !


 
Zelius ©   (2003-05-12 16:14) [16]


> Digitman © (12.05.03 14:20)

Не пойму, чем это мне поможет, как ты предлагаешь отлавливать исключения?



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

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

Наверх




Память: 0.5 MB
Время: 0.013 c
1-70341
Shadowofman
2003-05-08 17:17
2003.05.22
Как повысить точность TTimer?


11-70192
tamerlan311
2002-08-13 17:15
2003.05.22
сообщения от мыши


8-70409
Cukcik
2003-02-10 12:31
2003.05.22
как написать часы


4-70563
TankMan
2003-02-13 00:37
2003.05.22
Как сделать TPageControl и TTabsSheet ...например черного цвета?


1-70250
Igorek
2003-05-09 16:43
2003.05.22
Простой вопрос по указателю на метод