Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Fehlerbehandlung : Folgefehler ?

  Alt 12. Feb 2016, 13:29
Solche komischen Sachen muss man nur dann machen, wenn man etwas falsch implementiert hat, bzw. in so einem Ausnahmefall trotzdem noch etwas macht, bzw. etwas nicht korrekt zurücksetzt.
Delphi-Quellcode:
procedure TForm1.DoLoadSomething( const AFilename : string );
begin
  FSomething.Free;
  FSomething := TSomething.CreateFromFile( AFilename ); // da kann es knallen
end;
hinterlässt im Fehlerfall einen dangling Pointer.
Delphi-Quellcode:
procedure TForm1.DoLoadSomething( const AFilename : string );
var
  newSomething: TSomething;
begin
  newSomething := TSomething.CreateFromFile( AFilename ); // da kann es knallen
  try
    FSomething.Free; // da könnte es knallen
    FSomething := newSomething;
  except
    newSomething.Free;
    raise;
  end;
end;
Die Kernfrage ist immer: Wie hinterlasse ich das System in einem Ausnahmefall. Und das will gut überlegt sein.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (12. Feb 2016 um 13:31 Uhr)
  Mit Zitat antworten Zitat