Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.01 c
1-81772
HardClubber
2003-08-14 13:46
2003.08.25
Получить имя файла


1-81616
hawkins
2003-08-13 08:09
2003.08.25
В TImage вместо текста появляется черная полоса


1-81627
tovSuhov
2003-08-12 19:28
2003.08.25
Никто не сталкивался с глюком TImageList


1-81674
tytus
2003-08-11 17:28
2003.08.25
Цветные строки в ListView...


4-82007
Jao
2003-06-18 16:24
2003.08.25
Как можно узнать хендл приложения, который весит в трее?





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