Форум: "Начинающим";
Текущий архив: 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