Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
ВнизИсключительные ситуации Найти похожие ветки
← →
Мак (2003-08-12 15:31) [0]Уважаемые мастера! Подскажите каким образом можно осуществлять протоколирование исключительных ситуаций. Если можно, то с примерчиком
← →
Плохиш_ (2003-08-12 15:34) [1]Например, писать в файл.
← →
Мак (2003-08-12 15:35) [2]Ну.. да, а есть ли какой-нибудь для этого компонент?
← →
Юрий Федоров (2003-08-12 15:44) [3]Application.OnException - и пиши в файл
← →
Reindeer Moss Eater (2003-08-12 16:39) [4]Ну.. да, а есть ли какой-нибудь для этого компонент?
Скоро два целых без компонента сложить не смогут.
← →
jack128 (2003-08-12 17:31) [5]А вот мне интересно, можно ли протоколировать обработанные исключ ситуации(те, которые в try except end; заключены)?
← →
Плохиш_ (2003-08-12 17:45) [6]>>jack128 © (12.08.03 17:31) [5]
а смайлик или ты это на полном суръёзе?
← →
Е-Моё имя (2003-08-12 18:02) [7]в инди есть компонент нужный ;)
← →
jack128 (2003-08-12 18:08) [8]
> а смайлик или ты это на полном суръёзе?
Ты хорошо себе прдставляешь, что такое исключение?
Я - нет, потому и спрашиваю...
← →
Плохиш_ (2003-08-12 18:16) [9]>>jack128 © (12.08.03 18:08) [8]
Ok, тогда кто мешает добавить в except ... end ещё и запись в файл?
← →
Е-Моё имя (2003-08-12 18:17) [10]2 jack128
только в блоке обработки и можно
← →
jack128 (2003-08-12 18:25) [11]
> Плохиш_ (12.08.03 18:16) [9]
> Е-Моё имя © (12.08.03 18:17) [10]
Ну до этого я додумался, слава богу ;-)
Но это нужно в КАЖДЫЙ блок except end ставлять код...
Наверно нужно(если можно) перехватить вызов RaiseException().. Ну да ладно, это не к спеху..
← →
Толик (2003-08-12 18:29) [12]А как насчёт того, чтобы протокол вёл сам объект исключения? Создать некий EProtcolException и rais"ить его в нужный момент. А в конструкторе этого объекта организовать например запись в файл или что-нибудь ещё. И не надо будет каждый try except отлавливать.
← →
Юрий Федоров (2003-08-12 18:36) [13]>>Толик © (12.08.03 18:29) [12]
Тогда только свои исключения будут протоколироваться, а системные пролетят мимо протокола.
Я вот думаю, если ExceptProc подменить, получится что-нибудь дельное? Никто так не делал?
← →
Palladin (2003-08-12 19:09) [14]на этом сайте есть статейка по подмемну ExceptProc...
вот только не помню как зовется...
← →
Palladin (2003-08-12 19:20) [15]не подменяют... но все равно по теме...
http://www.delphimaster.ru/articles/errors/index.html
← →
Юрий Федоров (2003-08-12 19:24) [16]>>Palladin © (12.08.03 19:20) [15]
Спасибо за ссылку
Все таки я думаю, что перехватить все исключения(например для протоколирования), в том числе те, которые пойманы в try - except как-то можно, ведь делает же это отладчик delphi
← →
хм (2003-08-12 21:26) [17]Попробуйте
type
TObjProc=procedure(self:TObject);
var old:pointer;
procedure Our(self:TObject);
begin
writeln("Exception ",self.classname);
TObjProc(old)(self);
end;
procedure ReplaceAfterConstruction(Cls:TClass; proc:pointer);
var q:cardinal;
begin
VirtualProtect(pointer(integer(Cls)+vmtAfterConstruction),4,PAGE_READW RITE,q);
old:=ppointer(integer(Cls)+vmtAfterConstruction)^;
ppointer(integer(Cls)+vmtAfterConstruction)^:=proc;
VirtualProtect(pointer(integer(Cls)+vmtAfterConstruction),4,q,q);
end;
begin
try
ReplaceAfterConstruction(Exception,@our);
ReplaceAfterConstruction(EAccessViolation,@our);
pinteger(nil)^:=2;
except
readln;
end;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c