mir ist bei der Verwendung von Exceptions ein Effekt aufgefallen, den ich mir nicht erklären kann.
Ich erzeuge ein Objekt und innerhalb der Konstruktor-Methode tritt ein Fehler auf. Ich löse also eine Exception aus und fange diese im Programm ab.
Wenn ich aber nun anschließend die Objektvariable prüfe, dann ist diese nicht nil, obwohl doch kein Objekt erzeugt werden konnte. Womit hängt das denn zusammen? Ist das so gedacht?
Code: Alles auswählen
type
TPerson = class
private
FFirstname: String;
public
constructor Create;
property Firstname: String read FFirstname;
end;
constructor TPerson.Create;
begin
FFirstname := 'irgendwer';
raise Exception.Create('test');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
P: TPerson;
begin
try
P := TPerson.Create;
ShowMessage(P.Firstname);
except
on E: Exception do ShowMessage(E.Message);
end;
if P = nil then
ShowMessage('P = nil')
else
ShowMessage('P <> nil');
end;
Vielen Dank