AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von LuCSteR · begonnen am 22. Aug 2008 · letzter Beitrag vom 23. Aug 2008
Antwort Antwort
Seite 2 von 3     12 3      
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#11

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

  Alt 22. Aug 2008, 15:33
Dann wäre aber der finally-Abschnitt der falsche Ort gewesen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#12

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

  Alt 22. Aug 2008, 15:35
Wofür?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#13

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

  Alt 22. Aug 2008, 15:35
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#14

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

  Alt 22. Aug 2008, 15:39
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#15

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

  Alt 22. Aug 2008, 15:43
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...
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#16

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

  Alt 22. Aug 2008, 15:49
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
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#17

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

  Alt 22. Aug 2008, 15:55
Hallo,

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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#18

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

  Alt 22. Aug 2008, 16:01
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.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#19

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

  Alt 22. Aug 2008, 16:03
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#20

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

  Alt 22. Aug 2008, 16:06
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".
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 Uhr.
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