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

Вниз

Исключительные ситуации   Найти похожие ветки 

 
Мак   (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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
14-81947
Silentor
2003-08-06 20:32
2003.08.25
Разработка клиент-серверных игрушек


1-81751
R
2003-08-06 07:03
2003.08.25
Сколько строк вмещает ListBox


3-81528
rosl
2003-08-01 08:32
2003.08.25
сортировка


1-81617
Demon-Trouble
2003-08-13 08:05
2003.08.25
Синтаксис AlwaysShowSelect


1-81770
Miralex
2003-08-14 12:49
2003.08.25
Как програмно изменить имя у ячейки Treeview?