Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];

Вниз

Как отлавливать все 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
1-70322
OlegK
2003-05-08 14:12
2003.05.22
Преобразование миллисекунд в тип Tdatetime ??


14-70472
Yorick
2003-04-18 18:20
2003.05.22
Модули DirectShow,...


3-70104
gnat
2003-04-29 06:49
2003.05.22
Shadow для IB


6-70419
pav_oleg
2003-03-24 03:01
2003.05.22
Доступ к IE History


3-70167
Xeon
2003-05-02 08:55
2003.05.22
Файлы в базе данных





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский