Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Страницы:   1 2

Ditrix ©   (2007-11-12 10:34:00) 

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

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


Reindeer Moss Eater   (2007-11-12 12:34:00) [1]

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


Ditrix   (2007-11-12 12:29:00) [2]

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


Reindeer Moss Eater   (2007-11-12 12:24:00) [3]

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

begin
try
except
end;
end .

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


Ditrix   (2007-11-12 12:23:00) [4]

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


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

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

> ShowMessage(E.Message);

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


Ditrix   (2007-11-12 12:20:00) [6]

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


Anatoly Podgoretsky   (2007-11-12 12:12:00) [7]

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

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


Reindeer Moss Eater   (2007-11-12 12:11:00) [8]

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

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


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

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


Reindeer Moss Eater   (2007-11-12 12:09:00) [10]

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


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

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

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:00) [12]

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


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

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


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

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


Reindeer Moss Eater   (2007-11-12 11:55:00) [15]

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


Ditrix   (2007-11-12 11:53:00) [16]

2 Anatoly Podgoretsky [8]

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

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


Anatoly Podgoretsky   (2007-11-12 11:40:00) [17]

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

> 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.


Reindeer Moss Eater   (2007-11-12 11:08:00) [18]

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


Ditrix   (2007-11-12 11:07:00) [19]

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


Reindeer Moss Eater   (2007-11-12 11:03:00) [20]

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо