Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
Rav   (2005-10-19 20:55) [0]

Доброго времени суток, уважаемые!
Суть проблемы такова: есть программа для работы с БД, при работе естественно могут возникать различные исключения, которые обрабатываются в разных местах и по разному. Все было прекрасно, пока к данной проге я не прикрутил журнал работы. Возникла проблема: как "перехватить" любое (или почти любое, меня болше интересуют БД) исключение, возникающее в процессе работы программы, но не обрабатывать его, а просто записать сообщение в журнал работы, а затем передать его дальше, "по месту назанчения"?
Может быть есть ссылки на статьи. где почитать по теме? ... я не нашел :(

Заранее спасибо за помощь?


 
Sam Stone ©   (2005-10-19 21:54) [1]

Application.OnException


 
Rav   (2005-10-19 22:09) [2]


> Application.OnException

Не подходит :( Уже пытался :(
Application.OnException обрабатывает исключения, не перехваченные "местными" обработчиками, а мне нужно перехватить ДО "местной" обработки, а затем вернуть туда же.


 
Rav   (2005-10-19 22:17) [3]

Например: ошибку при удалении данных из таблицы Application.OnException в следующем куске кода "не увидит" никогда:

     try
       DbGrid.DataSource.DataSet.Delete;
       AddToDbLog(DbGrid.DataSource.DataSet.Tag, urUser.intUserId, Format(logRefDel, [Self.Caption, recID, recName]));
     except
       on E: Exception do ErrorDeleteMessage(DbGrid.DataSource.DataSet.Name, E);
     end;

Проблему решить в одном данном месте проще некуда: добавить еще AddToDbLog в блоке обработки. Беда только - таких мест ой как много, прога довольно большая :(


 
TuborgBeer   (2005-10-19 22:41) [4]


> Rav   (19.10.05 22:17) [3]
>
> Например: ошибку при удалении данных из таблицы Application.
> OnException в следующем куске кода "не увидит" никогда:


Неправильно мыслишь:
try
      DbGrid.DataSource.DataSet.Delete;
      AddToDbLog(DbGrid.DataSource.DataSet.Tag, urUser.intUserId, Format(logRefDel, [Self.Caption, recID, recName]));
    except
      on E: Exception do
   begin
      ErrorDeleteMessage(DbGrid.DataSource.DataSet.Name,
E);
      raise;
   end;

    end;


 
Rav   (2005-10-20 06:34) [5]

не совсем выход - опять же: проверять и править все обработчики....
неужели нет способа? :(


 
ЮЮ ©   (2005-10-20 07:06) [6]

>неужели нет способа ? :(
способа изменить поведение программы, не переписывая кода?
Естественно, нет!!!
Кроме как писать сразу правильно.


 
Lin7 ©   (2005-10-20 10:43) [7]


> Rav   (20.10.05 06:34) [5]
> не совсем выход - опять же: проверять и править все обработчики.
> ...
> неужели нет способа? :(

Компонент ExWatcher тебя выручит. :)


 
serthgadfhw   (2005-10-20 11:18) [8]

http://sourceforge.net/project/showfiles.php?group_id=47514


 
Rav   (2005-10-20 20:16) [9]


> Кроме как писать сразу правильно.

Правильно? Сразу все не предусмотришь....

И все же я нашел способ облегчить себе задачу...
Во всех обработчиках я использовал функцию вывода сообщения - в нее и встроил указатель на процедуру записи в лог. А для необработанных - OnException.



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

Форум: "Основная";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.043 c
6-1117993973
Vanek_TV
2005-06-05 21:52
2005.11.13
auth smtp


5-1109775581
вопрос
2005-03-02 17:59
2005.11.13
Как из компонента узнать, что в форме выполнилось событие ShortC


14-1130103424
asavkin
2005-10-24 01:37
2005.11.13
[работа] удаленная работа для программиста, Delphi


14-1129813492
keal
2005-10-20 17:04
2005.11.13
Увелечение рисунка


8-1110227158
Sash1988
2005-03-07 23:25
2005.11.13
Графика в OpenGL





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