Delphi-Quellcode:
type
TMyClass =
class
public
constructor Create;
destructor Destroy;
override;
end;
constructor TMyClass.Create;
begin
inherited Create;
raise Exception.Create('
exception within a constructor');
end;
destructor TMyClass.Destroy;
begin
raise Exception.Create('
exception within a destructor');
inherited;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
myVar: TMyClass;
begin
myVar:= TMyClass($badf00d);
//stack contains rubbish
try
myVar:= TMyClass.Create;
try
finally
myVar.Free;
end;
except
on E:
Exception do
outputDebugString(PChar('
Exception:'+E.
Message));
end;
end;
ist doch völlig ok
hier rufts du alles auch richtig auf
der destructor wird ja auch nur aufgerufen weil myVar.free auch durchgeführt wird
es entsteht keine
Exception
Delphi-Quellcode:
except
on E:
Exception do
outputDebugString(PChar('
Exception:'+E.
Message));
end;
wird NUR aufgerufen wenn das Objeckt nicht erzeugt werden konnte
und das Objekt wird erzeugt
der erste Wert für myChar
wird ja auch überschrieben, deshalb ist alles ok
mfg
Tyrael