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

Вниз

Обработка exception ов из главного модуля приложения   Найти похожие ветки 

 
Helldriver   (2003-04-29 23:34) [0]

Есть приложение, в главном модуле которого (файле проекта) блок CreateForm оформлен в скобки try...except (для отлова эксепшенов, возникающих в процессе создания форм). Сделано это для того, чтобы по критическому эксепшену приложение могло показать юзеру чего-нибудь и вывалиться без продолжения создания остальных форм (создание отражается ProgressBar"ом). Теперь начинается самое интересное - сначало эта констракшн работала... теперь нет! :) Вопрос - что я мог наковырять в настройках Delphi (ибо ни в конструкторы форм, ни в их OnCreate"ы никаких существенных изменений не вносилось и обработчиков ошибок внутри них нет - все должно уходить приложению), что это перестало работать?
Для информации - основным источником эксепшена является TDatabase, связанный через драйвер ODBC с MS SQL Server 7, хотя врядли это поможет :)).


 
Юрий Зотов   (2003-04-30 06:40) [1]

Вероятно, где-то, где раньше возникало исключение, был добавлен свой блок try-except без raise. В итоге исключение гасится и во внешний блок не поступает.


 
Helldriver   (2003-04-30 19:33) [2]

В том-то и дело, что потенциальные источники эксепшенов своих обработчиков не имеют и, по всем параметрам, возникающее исключение должно передаваться в вызывающий блок, т.е. файл проекта, но этого не происходит. Уже была опробована конструкция с принудительным отловом искючения (т.е. создания обработчика в OnCreate формы вокруг потенциального источника исключения и "генерации исключения по исключению") в любом случае, при компиляции проекта блок except в файле проекта просто игнорируется. Я бы все понял, но ведь работало же!
У меня подозрение, что одной из бессонных ночей я что-то перемудрил в настройках Delphi (ибо, как я уже говорил, существенных изменений со времени тестирования этой конструкции ни в файл проекта ни в обработчики событий создания форм не вносилось), т.к. пробуя совершенно новый проект примерно такого содержания:
Project1.pas:
uses Forms, DBTables, Dialogs, Unit1 in "Unit1.pas";

begin
Application.Initialize;
try
Application.CreateForm(TForm1, Form1);
except
on EDBEngineError do MessageDlg("Error!", mtError, [mbOK], 0);
Application.Terminate;
end;
Application.Run;
end.

Unit1.pas:

procedure TForm1.FormCreate(Sender: TObject);
begin
Database1.Open;
end;

при возникновении исключения получаю тот же результат - оно не ловится. А должно! :)


 
Ученик   (2003-05-01 10:53) [3]

Будет ловиться, если в Инспекторе объектов Delphi свойство Database1.Connected = True, а так оно ловиться здесь

{ Forms.pas }

procedure TCustomForm.DoCreate;
begin
if Assigned(FOnCreate) then
try
FOnCreate(Self);
except
if not HandleCreateException then
raise;
end;
if fsVisible in FFormState then Visible := True;
end;



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

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

Наверх




Память: 0.45 MB
Время: 0.011 c
14-46897
Rise
2003-04-28 11:54
2003.05.15
МОжно ли создать сайт на Delphi?


1-46680
Александр из Минска
2003-04-30 16:24
2003.05.15
TStringGrid


1-46833
Yanis
2003-04-30 15:44
2003.05.15
Помогите с OpenDialog!!!!!!!!!!!!!!!!


1-46774
Little Horror
2003-04-29 16:22
2003.05.15
TActionToolBar и TControlBar


14-46981
Valentino
2003-04-25 15:53
2003.05.15
Как еще кроме Application.ExeName найти каталог моей программы?





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