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

Вниз

Отлов обработанных исключений...   Найти похожие ветки 

 
Jolik ©   (2005-06-21 16:47) [0]

Можно ли (и если можно - то как) отловить возникшие исключения в блоке try ... except.
Поясню:
Хочу сделать лог файл (один на программу) и писать туда исключения. Чтобы не делать запись в лог в каждом блоке try ... except, можно ли сделать это гдето централизованно?

Спасибо!


 
Ega23 ©   (2005-06-21 16:49) [1]

Application.OnException надо переопределить.
Или воспользоваться компонентом TApplicationEvents


 
Victor08 ©   (2005-06-21 16:51) [2]

Напиши процедуру записи в лог и запускай её в блоках Try except


 
Ega23 ©   (2005-06-21 16:54) [3]

В догонку к Ega23 ©   (21.06.05 16:49) [1]

в секции except тогда raise надо будет делать, конечно...


 
Jolik ©   (2005-06-21 17:07) [4]

Application.OnException отрабатывает только если сообщение не отработано - в блоках try ... except оно не вызывается :(((

Некрасиво - в каждом try ... except записывать в лог :((( Обязательно забудешь написать, а потом будешь сидеть думать - как и что...


 
Jolik ©   (2005-06-21 17:08) [5]

Delphi (IDE имеется ввиду) падла же знает, когда произошло исключение - даже обработанное...


 
evvcom ©   (2005-06-21 17:11) [6]


> Delphi (IDE имеется ввиду) падла же знает

Ну так напиши свой отладчик! :)


 
Ega23 ©   (2005-06-21 17:14) [7]

2 Jolik ©   (21.06.05 17:07) [4]
Application.OnException отрабатывает только если сообщение не отработано - в блоках try ... except оно не вызывается :(((

Я же тебе сказал - raise надо делать.
Пример:

if refr or (not Qu.Active)
then  try
       if sql<>"*" then
         if (Qu is TQuery)or(Qu is TRxQuery) then
          begin
           (Qu as TQuery).sql.Clear;
           (Qu as TQuery).sql.Add(sql);
           (Qu as TQuery).RequestLive:=false;
          end;
           RefreshQuery(Qu);
      except on E:exception do
       Begin
        if mess="*" then ShowMessage(HMess.errQuery)
         else  if mess<>"" then ShowMessage(mess);
          if (Qu is TRxQuery) then realsqltext:=(Qu as TRxQuery).realsql.Text;
          if (Qu is TQuery) then realsqltext:=(Qu as TQuery).sql.Text;
          if (Qu is TStoredProc) then realsqltext:=(Qu as TStoredProc).StoredProcName;
          raise EGPException.Create(e.message+" "+mess+ " "+realsqltext);
       End;


 
Jolik ©   (2005-06-21 17:31) [8]

To Ega23:
Все верно - тока после raise Delphi прыгнет на конец процедуры, а если у меня после try ... except еще куча кода - он не выполнится... :(((


 
Digitman ©   (2005-06-21 17:37) [9]


> а если у меня после try ... except еще куча кода - он не
> выполнится


а с какого перепугу он должен выполниться ?

на то он и try..except ...
на то он и raise ...

ничто не мешает тебе вместо try..except обрабатывать исключения централизованно, в упомянутом обработчике события

там же анализировать класс исключения и инф-цию. связанную с тек.исключением ..

там же и "гасить" исключение установкой handled=true, если это требуется по твоему алгоритму


 
Ega23 ©   (2005-06-21 17:40) [10]

2 Jolik ©   (21.06.05 17:31) [8]
Все верно - тока после raise Delphi прыгнет на конец процедуры, а если у меня после try ... except еще куча кода - он не выполнится... :(((

А на это finally секция есть.

try
 try
  i:=StrToInt(Edit1.Text);
  ShowMessage(IntToStr(i));
 except
  raise Exception.Create("Бли-и-ин...");
 end;
finally
 Beep;
end;




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

Текущий архив: 2005.07.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.038 c
4-1115869887
Долька
2005-05-12 07:51
2005.07.11
Как мне узнать количество, выделенных файлов?


3-1117614522
_Max
2005-06-01 12:28
2005.07.11
выборка с учётом регистра


14-1118393080
Empleado
2005-06-10 12:44
2005.07.11
Люблю шведов ...


14-1117815608
Андрей Жук
2005-06-03 20:20
2005.07.11
О геноциде


8-1110382443
CJ Astral
2005-03-09 18:34
2005.07.11
Delphi и потоковое аудио





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