AW: Try-Finally und Try-Except zusammen nutzen?
Ich nutz ja recht selten etwas ala "div by null",
aber als ich mich das letzte mal verschrieben hatte, da war's glaub ich auch das div (div 0 statt div 10 geschrieben). Mir ist aber so, als wenn ich sowas auch mal mit einem / hatte :gruebel: |
AW: Try-Finally und Try-Except zusammen nutzen?
Soweit ich weiß, kann man eine Gleitkommazahl durch 0 teilen (das Ergebnis ist dann NaN).
Und naja, Java meckert ziemlich viel rum:
MfG Fabian |
AW: Try-Finally und Try-Except zusammen nutzen?
Hat sich hier eigentlich in den letzten 10 Jahren etwas getan? Ist in den nächsten 100 Jahren etwas zu erwarten?
Ich habe laufend Routinen, in denen sowohl Fehler abgefangen als auch Ressourcen freigegeben werden müssen. Dieses
Delphi-Quellcode:
finde ich furchtbar, und man sieht es auch selten. Es soll auch einen Haufen Code erzeugen.
Try
Try Was ist eigentlich damit, dürfte ein Profi sich sowas leisten, oder wäre sein Ruf dann dahin?
Delphi-Quellcode:
Wenn es noch gestattet ist und nicht als OT angesehen wird, würde ich auch gern auf diesen Beitrag bei SO verweisen (selbstverständlich führt auch dort David Heffernan seine Klinge). Ich habe nämlich auch angefangen, sehr viele Prozeduren in Funktionen umzuwandeln, in denen der Wert über einen var-Parameter zurückgegeben wird und Result mitteilt, ob alles geklappt hat.
Except
Liste.Free; Stream.Free; Objekt.Free; Showmessage('Mist!'); exit(False); end; Liste.Free; Stream.Free; Objekt.Free; end;
Delphi-Quellcode:
gefällt mir codetechnisch viel besser als
If BestimmeWert(var Wert:string) then ...
Delphi-Quellcode:
.
Wert := BestimmeWert;
If Wert <> '' then ... |
AW: Try-Finally und Try-Except zusammen nutzen?
Hallöle...:P
Zitat:
try/finally bewirkt das der Finally Block immer ausgeführt wird. Damit brauchst du die Freigaben nicht doppelt schreiben. https://de.wikipedia.org/wiki/Don%E2...epeat_yourself |
AW: Try-Finally und Try-Except zusammen nutzen?
Nein, schau doch noch mal hin ...
(zum Verständnis: haentschmanns Antwort ist nun nicht mehr, was sie mal war...) |
AW: Try-Finally und Try-Except zusammen nutzen?
Zitat:
|
AW: Try-Finally und Try-Except zusammen nutzen?
Zitat:
Aber jetzt anders, wie macht ihr das? 1. Doppeltes Try 2. Doppeltes Try umgehen 3. Zweite Variante doch wohl nicht, aber nur gefühlsmäßig, oder aus sachlichem Grund? |
AW: Try-Finally und Try-Except zusammen nutzen?
Bevorzugt doppeltes Try.
Wenn möglich in Funktionen ausgelagert, die mir sagen, ob's erfolgreich war bzw. einen definierten Wert zurückgeben, mit dem ich garantiert weiter arbeiten kann. Also ähnlich zu Deinem Beispiel mit Funktion und Var-Parametern. Var-Parameter immer dann, wenn die Funktion mehr als einen Wert liefern muss oder im Fehlerfalle anders vorgegangen werden muss, als im Erfolgsfalle. Also sowas:
Delphi-Quellcode:
In beiden Fällen gilt: Als Var-Parameter nur die, die auch verändert werden müssen, die übrigen als Const-Parameter.
if MeineFunktion(1..n Parameter) then begin
// Weiterverarbeitung im Erfolgsfall. end else begin // Weiterverarbeitung im Fehlerfall. end; // oder eben, Fehler in der Funktion werden vollständig behandelt und Rückgabewert ist für die Weiterverarbeitung geeignet. Variabel := MeineFunktion(1..n Parameter);
Delphi-Quellcode:
Funtionen können als Rückgabewert ggfls. aber auch mal vom Typ "Record of wasauchimmer" sein, dann hat man zwar nur einen Rückgabewert, der kann aber als Record mehrere Werte enthalten ;-) (ist aber eher die Ausnahme, meist nur dann, wenn aus der Funktion irgendwas aufgerufen wird, was sowieso schon 'nen Record liefert.)
function MeineFunktion(0..n Const-Parameter, 1..n Var-Parameter) : Boolean;
function MeineFunktion(1..n Const-Parameter) : BedarfsgerechterTyp; |
AW: Try-Finally und Try-Except zusammen nutzen?
Das wäre alles auch nach meinem Gusto (vielleicht ein bisschen außer dem doppelten Try). Angenehm zu wissen.
|
AW: Try-Finally und Try-Except zusammen nutzen?
Ich mache das auch mit einem doppelten
Delphi-Quellcode:
. Nur bin ich mir nie so sicher, wie die Reihenfolge am sinnvollsten ist.
try
So:
Delphi-Quellcode:
Oder doch so:
try
obj := TObject.Create; try // Some code except // Exception handling end; finally obj.Free; end;
Delphi-Quellcode:
Ich würde ja fast sagen, dass die letztere Variante die sinnvollere sein müsste. Weil prinzipiell könnte es ja schon im Constructor des zu erzeugenden Objektes knallen. In der ersten Variante würde das dann nicht abgefangen werden.
try
obj := TObject.Create; try // Some code finally obj.Free; end; except // Exception handling end; Wie seht ihr das? PS: Ich würde mir auch ein
Delphi-Quellcode:
Konstrukt wie in C# wünschen.
try .. except .. finally
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 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