Вниз
Скачать: 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.48 MB
Время: 0.012 c
1-96823
viper
2003-01-20 14:24
2003.01.30
Add Icon in Tray


14-96952
Anatoly Podgoretsky
2003-01-12 13:22
2003.01.30
Именинники 12 января


3-96594
AM
2003-01-13 14:14
2003.01.30
Что это за exception? Глюк в версии DBE или...


14-97023
AM
2003-01-13 21:09
2003.01.30
Хороший монитор, но...


14-96974
NATURALLY BORN PHILOSOPHER
2003-01-08 23:36
2003.01.30
Бродячие торговцы - кто они?...




   Наверх