Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, System.Classes;
procedure ShowResult(L: Double);
var
MyEx: Exception;
begin
MyEx := nil;
try
writeln(7/L);
except
on e: Exception do
begin
MyEx := e;
writeln('Exception: ', e.Message);
end;
end;
if Assigned(MyEx) then
writeln('ShowResult: ', MyEx.Message);
end;
begin
ShowResult(0.0);
readln;
end.
Что таки происходит когда мы делаем такое?
принцип простой - тебе повезло что ты не обратился к виртальным методам. а так бы упал бы еще раз но уже с AV Для более полного понимания встань бряком в destructor Exception.Destroy; тогда и поймешь что после выхода из обработчика исключения MyEx фактически указывает на разрушеный обьект
Да. Походил отладчиком. Вроде понятней стало. Спасибо.
Обсуждают сегодня