Главная страница
    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.008 c
8-81844
Petro
2003-04-02 14:16
2003.08.25
Как из 1000 картинок найти похожую на образец?


3-81598
Relaxxx
2003-07-31 13:07
2003.08.25
Рисовать в ячейках DBGrid как на канвасе


4-82002
VD601
2003-06-22 21:02
2003.08.25
Что за сообщение $0009?


1-81797
Alik$
2003-08-14 07:43
2003.08.25
UDF


1-81686
ilka
2003-08-11 14:16
2003.08.25
проблема с TStrings





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