Вниз
Скачать: CL | DM;

Exceptions и имя функции   Найти похожие ветки 

← →
yaric   (2003-01-12 17:37) [0]

Возникла такая ситуация нужно вести лог ошибок системы
желательно туда писать название функции где произошла ошибка
и значения ее параметров при этом возможно ли такое


← →
TTCustomDelphiMaster ©   (2003-01-12 22:32) [1]

Возможно, но лучше писать без ошибок.
Все защищенные функции должны выглядеть так
function SafeDiv(a, b: double): Result;
begin
try
Result := a/b;
except
WriteErrorLog("SafeDiv", a, b); //Тут можно по разному передавать переменные, по лучше их не приводить в текстовый формат, а писать в Hex значение байтов которые им пренадлежат.
end;
end;


← →
yaric   (2003-01-13 20:06) [2]

А если я хочу обрабатывать автоматически например в
TCustomApplicationEvents.OnException как мне біть в єтом случае


← →
Моджахед   (2003-01-13 20:21) [3]

Assert, но лога не выйдет ;-)


← →
gsu ©   (2003-01-13 20:22) [4]

procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
Caption:=e.Message;
лог или обработка
Abort;
end;


← →
Моджахед   (2003-01-13 21:39) [5]

2 gsu ©
Сорри, но человеку нужно было:

вести лог ошибок системы
желательно туда писать название функции где произошла ошибка



TTCustomDelphiMaster на то и намекал, что (общеизвестно) на этапе выполнения никаких имен функций нет, и их нужно прописывать самому в своих ексепшинах.



← →
gsu ©   (2003-01-13 21:46) [6]

эээ, точно на то он и TTCustomDelphiMaster, но я про название и параметры и не спорю - хороший подход, просто я ответил на вопрос: "А если я хочу обрабатывать автоматически например в TCustomApplicationEvents.OnException как мне біть в єтом случае"


← →
vuk ©   (2003-01-13 22:56) [7]

В принципе можно использовать средства трассировки стека из JCL http://sourceforge.net/projects/jcl/
Только вот имена процедур можно получить только при включении в exe отладочной информации TD32 (галочка в настройках линкера).


← →
yaric   (2003-01-14 16:33) [8]

>>vuk

В принципе можно использовать средства трассировки стека из JCL http://sourceforge.net/projects/jcl/
Только вот имена процедур можно получить только при включении в exe отладочной информации TD32 (галочка в настройках линкера).



если можна то поподробнее как это можно сделать с помощью JCL


← →
vuk ©   (2003-01-14 17:32) [9]

Там в примерах есть StackTrackExample.dpr Как раз именно обработка исключений с выдачей трассировки стека.


← →
DarkGreen ©   (2003-01-15 05:05) [10]

MAP файл + адрес ошибки, будет тебе и имя функции и строка в исходнике. И ни какой отладочной информации не нужно.


← →
yaric   (2003-01-17 15:00) [11]

Как получить адрес ошибки?


← →
yaric   (2003-01-20 14:20) [12]

Ну помогите же кто-нибудь...


← →
Игорь Шевченко ©   (2003-01-20 14:36) [13]

ExceptAddr - надо help почаще читать


← →
yaric   (2003-01-20 17:40) [14]

ExceptAddr - возвращает адрес инструкции, которая привела к исключению, а как получить хотябы имя функции(проц.), в которой произошло исключения, не говоря уже о номере строки в коде.


← →
Игорь Шевченко ©   (2003-01-20 17:53) [15]


> Как получить адрес ошибки?


Какой вопрос, такой ответ.

Все-таки, покопай в сторону JCL, вроде и ссылку дали...



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
1-96789
Alex G
2003-01-22 19:24
2003.01.30
Handle


7-97067
dronas555
2002-11-07 17:53
2003.01.30
Частота проца(P4)


1-96760
zavisalych
2003-01-22 10:26
2003.01.30
Баг в компиляторе? неверное присвоение локалькой переменной


9-96501
Artem_V
2002-08-03 12:06
2003.01.30
DelphiX


1-96731
France
2003-01-22 13:06
2003.01.30
ListView.Selected.Index




   Наверх