![]() |
AW: Try - except - finally
Zitat:
|
AW: Try - except - finally
Welchen Sinn es haben soll und inwieweit es "richtiger" sein soll, die finalen Aufräumarbeiten und die Fehlerbehandlung in zwei getrennte Prozeduren zu stecken, wobei eine die andere aufruft, erschliesst sich mir überhaupt nicht (ausser, mit dem Auftraggeber ist ein Zeilenhonorar vereinbart :) ). Das Programm wird dadurch weder besser lesbar noch übersichtlicher, eher im Gegenteil.
|
AW: Try - except - finally
Oftmals wird eine Code-Stelle, an der eine Exception auftritt, gar nicht in der Lage sein, eine Entscheidung zu treffen, wie mit der Situation umgegangen werden soll. In diesem Fall ist sie geradezu gezwungen, die Exception nach draußen zu reichen.
|
AW: Try - except - finally
Als kleiner Einwurf der hier garantiert niemanden wirklich weiterbringt: In den ersten Tagen (Wochen?) Delphi habe ich mich auch immer wieder daran gerieben, kein try-except-finally zu haben. Um ehrlich zu sein, gefällt mir der Delphi-Weg mittlerweile besser, es ist einfach nur eine Gewöhnungssache.
Mir ist im Nachhinein auch aufgefallen dass wenn mich das rein optisch (von der Einrückung) her anfing zu stören, meine Methoden eh viel zu lang waren. PS: Wann kommt endlich ARC auf den Desktop? Damit spart man sich wohl endlich 95% aller
Delphi-Quellcode:
sparen :wink:
Referenz := TObject.Create();
try [...] finally Referenz.Destroy(); end; |
AW: Try - except - finally
Zitat:
fliegt Dir das nicht doch noch um die Ohren, wenn die Erzeugung von Referenz fehlschlägt? Sollte man nicht besser
Delphi-Quellcode:
aufrufen,
Referenz.Free
denn das prüft doch noch auf
Delphi-Quellcode:
, bevor es destroy aufruft?
<> nil
Oder denke ich falsch? |
AW: Try - except - finally
Ja, .Destroy() sollte man nie direkt aufrufen.
|
AW: Try - except - finally
Zitat:
Du kannst natürlich auch alles in eine Methode packen, klar. Das mag bei einem einzeiligen Aufruf (und den einfachen Beispielen hier) noch funktionieren, aber das wird schnell unübersichtlich, wenn Aufräumarbeiten, Fehlerbehandlung usw komplexer werden. Es ist einfacher, sich an dieses oder ein ähnliches Pattern zu halten. Du kannst das natürlich sein lassen und alles in eine Methode packen, ganz wie es Dir gefällt. |
AW: Try - except - finally
Zitat:
Fliegt der Konstruktor bereits raus, wird der try-Block erst garnicht ausgeführt (aber der Destruktor des Objekts aufgerufen). |
AW: Try - except - finally
Alles richtig, Günni.
|
AW: Try - except - finally
Zitat:
Sieht dann in etwa so aus:
Code:
try
{ DoSomething(); } catch (InvalidOperationException ex) // Oder was auch immer für eine Exception { HandleException(); } catch (Exception ex) // Noch andere Exceptions abfangen { HandleAnotherException(); } finally { MakeTheFinalStep(); } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 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