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

Вниз

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

 
Ditrix ©   (2007-11-12 10:34) [0]

Приветствую.
собственной обработчик исключений  в приложени "подключается"  напр след образом
/ procedure TForm1.FormCreate(Sender: TObject);
// begin
//   Application.OnException:= MyExceptionManager;
// end;

есть ли подобный прием для консольного приложения?
т.е. при отсутствии объекта  Application


 
Reindeer Moss Eater ©   (2007-11-12 10:44) [1]

а зачем он там?

begin
try
except
end;
end.


 
Ditrix ©   (2007-11-12 10:53) [2]

хочется обрабатывать в одном модуле (например вести лог), не заботясь о  "а не забыл ли я try except использовать"


 
Reindeer Moss Eater ©   (2007-11-12 10:59) [3]

Мой пример делает это в одном модуле.
Project1.dpr


 
Ditrix ©   (2007-11-12 11:02) [4]

мне одного модуля не достаточно :)
даже для консольного приложения


 
Reindeer Moss Eater ©   (2007-11-12 11:03) [5]

Мой пример не ограничивает тебя в количестве модулей


 
Ditrix ©   (2007-11-12 11:07) [6]

ну да. не ограничивает.
только не избавляет от необходимости держать руку на пульсе, не забывать оборачивать код в try except


 
Reindeer Moss Eater ©   (2007-11-12 11:08) [7]

У меня он уже обернут. Целиком весь.


 
Anatoly Podgoretsky ©   (2007-11-12 11:40) [8]

Справка говорит следующее:

> An exception block that contains no exception handlers,
> but instead consists only of a list of statements, handles
> all exceptions. For example,
>
> try
>  ...
> except
>   HandleException;
> end;
>
> Here, the HandleException routine handles any exception
> that occurs as a result of executing the statements between
> try and except.


 
Ditrix ©   (2007-11-12 11:53) [9]

2 Anatoly Podgoretsky [8]

HandleException - метод класса TApplication
экземпляра которого в консольном приложении нет.

выходит, что кроме как try..except вариантов нет ?


 
Reindeer Moss Eater ©   (2007-11-12 11:55) [10]

А типа если есть Application, то это типа вариант без try except.
Приплыли.


 
Ditrix ©   (2007-11-12 12:00) [11]

>>Reindeer Moss Eater [10]
если есть Application можно использовать свой обработчик исключений.
где бы и кем бы они не инициировались.


 
Reindeer Moss Eater ©   (2007-11-12 12:01) [12]

И это конечно же посредством волшебства, а не обработки try except


 
Ditrix ©   (2007-11-12 12:08) [13]

нет. волшебство тут не причем.
код обработчика может быть следующим

procedure MyExceptionManager(Sender: TObject; E:Exception);
begin
  ShowMessage(E.Message);

  MyWriteToLog(E.Message);  
// вот это я не хочу вставлять каждый раз в
//  try..except, тем более что не все исключения попадут в лог, а только
// явно мною обработаные. а мне нужны все!

end;

для Windows приложения это реализуется легко
для консольного - не вижу решения, из за отсутствия Application


 
Dib@zol ©   (2007-11-12 12:08) [14]

Тады выход один - не юзать Classes. Classes и SysUtils это зло :) Ловить надо рантаймы, а не ТЕксепшны =))))


 
Reindeer Moss Eater ©   (2007-11-12 12:09) [15]

begin
try
except
//А это что по твоему?
end;
end.


 
Ditrix ©   (2007-11-12 12:11) [16]

>>Dib@zol [14]
...и консольные приложения писать на "С" ;)


 
Reindeer Moss Eater ©   (2007-11-12 12:11) [17]

для консольного - не вижу решения, из за отсутствия Application

Зачем тебе Application, если тебе на самом деле нужен Exception?


 
Anatoly Podgoretsky ©   (2007-11-12 12:12) [18]

> Ditrix  (12.11.2007 11:53:09)  [9]

Обычная процедура


 
Ditrix ©   (2007-11-12 12:20) [19]

>>Обычная процедура
только обработка "рассеяна" по коду.  и не все отлавливает.


 
Anatoly Podgoretsky ©   (2007-11-12 12:20) [20]

> Ditrix  (12.11.2007 12:08:13)  [13]

> ShowMessage(E.Message);

Это что консольное приложение?


 
Ditrix ©   (2007-11-12 12:23) [21]

>>Это что консольное приложение?
это был пример реализации для Windows приложения


 
Reindeer Moss Eater ©   (2007-11-12 12:24) [22]

только обработка "рассеяна" по коду.  и не все отлавливает.

begin
try
except
end;
end.

Где и что здесь "рассеяно" по всему коду?
Финальную паскалевскую точку не заметил?


 
Ditrix ©   (2007-11-12 12:29) [23]

>>Reindeer Moss Eater  [22]
в этом случае алгоритм работает до первого исключения.
не то....


 
Reindeer Moss Eater ©   (2007-11-12 12:34) [24]

Если в юзез добавить Forms и использовать событие, то будет то же самое.
До первого исключения.



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

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

Наверх





Память: 0.5 MB
Время: 0.041 c
2-1195035189
San1
2007-11-14 13:13
2007.12.09
как узнать цвет в заданном пикселе канвы


2-1195214661
allucard
2007-11-16 15:04
2007.12.09
Delphi + firebird


15-1194927662
vajo
2007-11-13 07:21
2007.12.09
В Китае наладили выпуск накопителей с функцией кражи паролей


2-1194979500
Б. Гейтс
2007-11-13 21:45
2007.12.09
Над контролом ли мышь? (API only)


2-1194847526
Sergl
2007-11-12 09:05
2007.12.09
Проблемка с отчетами QuickReport





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