![]() |
Geht auch try...finally....except?
Hallo,
ich habe einen try...except...-Block und möchte nun noch finally einfügen, funktioniert das? |
Re: Geht auch try...finally....except?
Nicht direkt, aber schachteln geht immer:
Delphi-Quellcode:
...:cat:...
try
try finally end; except end; |
Re: Geht auch try...finally....except?
jein!! :mrgreen:
zb
Delphi-Quellcode:
try
myObj := TMyObj.create; try .... finally myObj.free; end; except HandleException; end; |
Re: Geht auch try...finally....except?
Erm. Soltte das nicht andersrum geschachtelt werden?
Also sorum:
Delphi-Quellcode:
Weil andersrum würde er in den Except ja gar nicht mehr reinlaufen, wenn der nicht weitergeraised würde.
try
try // tu was except // behandle Fehler end; finally // aufräumen end; |
Re: Geht auch try...finally....except?
Hi.
Moment... Wenn die Exception nicht weitergeraised wird, ist
Delphi-Quellcode:
dann nicht das selbe wie
try
{...1} try except end; finally {...2} end;
Delphi-Quellcode:
:?: (Mal abgesehen, dass try...finally und try...except die Programmausführung verlangsamen und die 2. methode somit schneller ist...)
{...1}
try except end; {...2} |
Re: Geht auch try...finally....except?
nein
wenn in 1 ein fehler kommt wird 2 nicht mehr ausgeführt (bei der 2ten methode) EDIT: dasselbe wäre das:
Delphi-Quellcode:
try
{...1} except end; {...2} |
Re: Geht auch try...finally....except?
Zitat:
Greetz alcaeus |
Re: Geht auch try...finally....except?
selbstverständlich würde das except die Exception kriegen, ...gehen würd auch
Delphi-Quellcode:
..bei dem Beispiel würde bei einer Exception bei FirstProcedure diese behandelt
try
myObject := TMyObject.Create; try try myObject.FirstProcedure(); except MachWas; raise; end; ... try myObject.OtherProcedure(); except MachWas; end; finally myObject.Free; end; except HandleException; end; und weitergegeben ducrh das raise; ..bei einer Exception bei OtherProcedure würde dieser in dem ihn umgebenden except behandelt aber zum äusseren except nicht weitergegeben.. es kommt immer auf deine Bedürnisse an, aber die Verschachtelung geht immer mfg |
Re: Geht auch try...finally....except?
Wie ist das eigenltich verlangsamt sich das Programm auch( sehr ) wenn ich eine Programmumfassende try..except..end Anweisung Einfüge?
|
Re: Geht auch try...finally....except?
Programmumfassend? Wie meinst du das? :gruebel:
|
Re: Geht auch try...finally....except?
So:
Delphi-Quellcode:
program Programmumfasend;
begin try except end; end. |
Re: Geht auch try...finally....except?
Zitat:
Dennoch würde ich nur dazu raten, solchen Code in try..except/finally zu kapseln, wo auch wirklich eine Exeption abgefangen werden muss. MfG Binärbaum |
Re: Geht auch try...finally....except?
Naja ich weiss nicht ob das nicht Sinnvoll wäre es doch so zu machen, da ja bald( 2006 ) der Cell Processor rauskommt wird die Geschwindigkeit weniger ein Problem sein, allerdings hat man dann ein Programm was Praktisch "ohne Fehler" läuft( B.z.w. sie werden alle abgefangen ).
|
Re: Geht auch try...finally....except?
Zitat:
Den Except-Block immer um eine mögliche Fehlerquelle setzen und dort auch behandeln, dann liegts du immer richtig und wenn es nötig ist, die Exception raisen und beim nächsten darüber leigenden Except-Block behandeln... mfg Edit: PS: Zur Geschwindigkeit Die Geschwindigkeit wird nciht großartig beeinträchtigt, solange du nicht im Except-Block zeitaufwendige sachen machst mit Except-Block meine ich diese Stelle..
Delphi-Quellcode:
try
... except <--- Hier end; |
Re: Geht auch try...finally....except?
Wenn du dein ganzes programm in try ... except ... end; setzt fürht ein Fehler am Anfang dazu, dass das ganze restliche Programm abgebrochen wird. Wenn du nur die unsicheren Stellen in einen Block setzt kann das restliche Programm noch weiterlaufen. Ich denke es kommt auf die Situation an.
MfG freak |
Re: Geht auch try...finally....except?
Zitat:
1. Es wird wohl kaum jeder diesen Prozessor haben/kaufen wollen. 2. Es sollte garnicht erst dazu kommen, dass Fehler abgefangen werden müssen. Das kann man z.B. durch eine Beschränkung der zulässigen Eingabewerte erreichen. Und wenn eine Exception abgefangen wird, wird der Code nach der Exception garnicht mehr ausgefürt, da sofort in den except-Teil gesprungen wird. Und wenn der fehler schon in den ersten Zeilen des Codes auftritt, ist der Rest quasi für die Katz. MfG Binärbaum |
Re: Geht auch try...finally....except?
Nicht umbedingt, wenn du die Exceptions selber auslößt und erstellst( Gibt zwar viele exceptions dann aber egal ) hast du bei Vernünftigem Code doch eine recht gute Übersicht über die Fehlerquelle!
Um das Programm weiterlaufen zu lassen gibt es ja auch noch die Möglichkeit an bestimmten Stellen zusätzliche Blöcke zu setzen, oder das ganze in eine While Schleife zu Packen. Solange du die Variablen nicht Freigibst sind die Aktuellen Programmvariablen auch noch erhalten! @Binärbaum: Warum sollte niemand den Prozessor kaufen wollen?? |
Re: Geht auch try...finally....except?
Hi,
Zitat:
cu |
Re: Geht auch try...finally....except?
Kann hier jemand sagen wie gross der Geschwindigkeitsverlust ist?
|
Re: Geht auch try...finally....except?
Zitat:
Nicht jeder wird sofort auf Cell umsteigen. |
Re: Geht auch try...finally....except?
Der Prozessor ist doch schei...al ups sry ^^....
Gut programieren wollen wir, oder? Dann sollte man auch um jede Stelle die eine mögliche Feherquelle ist einen try except bauen... ..wer das nicht macht und große Projekte durchführt wird noch ein blaues Wunder erleben Zur Geschwindigkeit siehe meinen letzen Post mfg |
Re: Geht auch try...finally....except?
Zitat:
MfG Binärbaum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz