Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Möglichkeit: Try ... Except ... Finally ? (https://www.delphipraxis.net/119224-moeglichkeit-try-except-finally.html)

mkinzler 22. Aug 2008 14:33

Re: Möglichkeit: Try ... Except ... Finally ?
 
Dann wäre aber der finally-Abschnitt der falsche Ort gewesen

DeddyH 22. Aug 2008 14:35

Re: Möglichkeit: Try ... Except ... Finally ?
 
Wofür?

LuCSteR 22. Aug 2008 14:35

Re: Möglichkeit: Try ... Except ... Finally ?
 
Es musste nur igrendwo im Zusammenhang mit dem Try das Ini.Free gesetzt werden. Funktioniert am ende von try, genauso wie im finally block. Blos wenn vorher im try block irgendwas nicht funktioniert, arbeitet er das ini.free nicht mehr ab. So wie es Bernau schon kommentiert hat. Deswegen auch besser im finally block aufgehoben.

mkinzler 22. Aug 2008 14:39

Re: Möglichkeit: Try ... Except ... Finally ?
 
Zitat:

Zitat von DeddyH
Wofür?

Wenn etwas in finally steht, wird es immer ausgeführt, wenn im Try-Block nur wenn vorher kein Fehler aufgetreten ist.

Bbommel 22. Aug 2008 14:43

Re: Möglichkeit: Try ... Except ... Finally ?
 
Hm, über die Diskussion try...except...finally stolpert man ja hier beim Mitlesen öfter mal. Meistens wundere ich mich, was eigentlich gegen ein einfaches (um es mal auf das urpsrüngliche Beispiel zu beziehen)...

Delphi-Quellcode:
try
  bla;
  blubb;
except
  bam;
end;

puh;
...spricht. Hier würde man kein finally benötigen, weil das puh schon allein durch den try-except-Block auch bei einem Fehler immer ausgeführt wird.

Oder ist an diesem Ansatz irgendwas falsch/unschön?

Bis denn
Bommel

edit: 'n paar begin...end entfern...

LuCSteR 22. Aug 2008 14:49

Re: Möglichkeit: Try ... Except ... Finally ?
 
So hatte ich es urprünglich geschrieben. Das Ini.Free quasie nach der Abhandlung Try-Except auszuführen. Nur musste ich dann mit Erschüttern festellen, das alle Folgenden Funktionen/Befehle nichts mehr gemacht haben. So z.b. (findet ja alles in einer OnFormCreate statt) sollte ein Ordner erstellt werden, was dann allerdings nicht mehr funktionierte. nach ein paar Untersuchungen stellte ich dann fest, das das Ini.Free das Problem war. Das muss wie schont erwähnt mit in das Try bzw sicherer ins finally.

Jetzt funktioniert ja alles wieder prächtig :)

xaromz 22. Aug 2008 14:55

Re: Möglichkeit: Try ... Except ... Finally ?
 
Hallo,

Zitat:

Zitat von Bbommel
Delphi-Quellcode:
try
  bla;
  blubb;
except
  bam;
end;

puh;

Das funktioniert nur solange, bis Du im Except-Teil eine neue Exception wirfst.

Gruß
xaromz

bernau 22. Aug 2008 15:01

Re: Möglichkeit: Try ... Except ... Finally ?
 
Zitat:

Zitat von mkinzler
Was genau das gegengesetzte wäre, was er will

Sorry. Hast recht. Wenn man nebenbei was macht........

Das folgende Beispiel ist richtig. Ein umschliessendes finally ist eigendlich nicht nötig. Ausser es tritt im Except noch eine exception auf.

Delphi-Quellcode:
try
  bla;
  blubb;
except
  bam; //Das wir ausgeführt, wenn ein Fehler auftritt.
end;
puh; // Das wird auf jedenfall abgearbeitet. Egal was oben passiert.

Bbommel 22. Aug 2008 15:03

Re: Möglichkeit: Try ... Except ... Finally ?
 
Hm, merkwürdig. Ich setze die Konstruktion, wie ich sie beschrieben habe, an einigen Stellen in meinen Programmen ein und eigentlich klappt das immer wunderbar:

Delphi-Quellcode:
try
  irgendwas;
except
  fehlermedlung_oder_so;
end;

aufraeumen;
weitere_befehle;
Alle Zeilen nach dem try-except-Block werden bei mir immer ausgeführt - sonst hätte ich hier in manchen Programmen richtige Probleme. try-finally nutze ich eigentlich so gut wie gar nicht, weil ich immer dachte, der würde dann eben nur noch den finally-Teil ausführen und dann nix mehr. Also:

Delphi-Quellcode:
try
  irgendwas;
finally
  aufraeumen;
end;

weitere_befehle;
Im zweiten Beispiel würde zwar auch aufgeräumt, aber keine weiteren Befehle mehr ausgeführt. Dachte ich.

Jetzt bin ich verwirrt. Aber glücklich. Läuft ja bei uns beiden. ;)

(Bin aber dennoch für Aufklärung dankbar)

@xaromz: Naja, okay, normalerweise gebe ich da nur Fehlermeldungen aus oder setze Variablen auf default-Werte, da sollte dann nix mehr passieren. Dass man da sonst auch wieder Fehlerbehandlungen machen muss, ist klar, aber die Frage bliebe ja die gleiche: auch das könnte ich ja prinzipiell durch mehrere verschachtelte try-except-Blöcke machen...
Bis denn
Bommel

DeddyH 22. Aug 2008 15:06

Re: Möglichkeit: Try ... Except ... Finally ?
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStringlist;
begin
  try
    sl.Add('Bumm');
  except
    ShowMessage('Oha');
    exit;
  end;
  ShowMessage('Huhu');
end;
Da kommt kein "Huhu".


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz