Я столкнулся со следующей проблемой в Delphi с блоком try/except
.
У меня есть простое приложение - одна MainForm с именем fr_MAIN
и одна TDataModule
с именем DM
. DM
не создается автоматически, но создается во время выполнения в событии fr_MAIN
Button2.OnClick
:
procedure Tfr_MAIN.Button2Click(Sender: TObject);
begin
try
DM := TDM.Create(nil);
Showmessage('DM started!');
except
on E:Exception do
begin
Showmessage('DM not started!');
end;
end;
DM
имеет некоторый код в своем событии OnCreate
:
procedure TDM.DataModuleCreate(Sender: TObject);
begin
raise Exception.Create('this is error!');
// DM code here ...
end;
Проблема в том, что когда я нажимаю Button2
, я получаю сообщение об исключении 'this is error!'
, остальная часть DM code here
не запускается - что правильно! Но затем я также получаю сообщение 'DM started!'
вместо сообщения 'DM not started!'
.
Исключение, вызванное DM
, прерывает действие, но не перехватывается в блоке except
формы!
Почему это?