![]() |
Delphi-Version: 10.2 Tokyo
Was würdet ihr von einem try-except-finally-Konstrukt halten?
Moin!
Wenn ich mir verschiedene Quellen so anschaue, insbesondere wenn man mit Datenbanken zu tun hat, fällt mir immer wieder auf wie sperrig das Exception-Handling eigentlich ist:
Delphi-Quellcode:
Und man muss sich drauf verlassen, dass die Transaction nicht auch noch zwischen dem Rollback und dem Commit zufällig anderswo eine Transaction gestartet hat. Um auf Nummer sicher zu gehen, gibts die mitlaufende boolsche Variable. Wie elegant wäre da sowas:
myBoolAllesOk := False;
try try myTransaction.StartTransaction; myDB.TuWas; myBoolAllesOk := True; except on E: EIrgendwas do myTransaction.Rollback; end; finally if myBoolAllesOk then myTransaction.Commit; end;
Delphi-Quellcode:
Soweit ich das überblicken kann ließe sich eine solche Spracherweiterung problemlos einbauen weil es rückwärtskompatibel wäre.
try
myTransaction.StartTransaction; myDB.TuWas; except on E: EIrgendwas do myTransaction.Rollback; finally myTransaction.Commit; end; Was haltet ihr davon? Grüße Cody |
AW: Was würdet ihr von einem try-except-finally-Konstrukt halten?
Ja, so ein Konstrukt wäre sinnvoll,
aber warum nicht so?
Code:
try
myTransaction.StartTransaction; myDB.TuWas; myTransaction.Commit; except on E: EIrgendwas do myTransaction.Rollback; end; |
AW: Was würdet ihr von einem try-except-finally-Konstrukt halten?
Das war nur ein Pseudocode-Beispiel wie es in der Praxis oft vorkommt und sich viele was drunter vorstellen können. Anstatt der Transaction kann an sich auch irgend ein Object-Create-Free vorstellen.
|
AW: Was würdet ihr von einem try-except-finally-Konstrukt halten?
Zitat:
Eher
Delphi-Quellcode:
try
o := TKlasse.Create; TuWas; except on E: EIrgendwas do FehlerBearbeitung; finally o.Free; end; |
AW: Was würdet ihr von einem try-except-finally-Konstrukt halten?
Oder noch eher:
Delphi-Quellcode:
o := TKlasse.Create;
try TuWas; except on E: EIrgendwas do FehlerBearbeitung; finally o.Free; end; |
AW: Was würdet ihr von einem try-except-finally-Konstrukt halten?
Also Idee gut, Beispiel Mist?
|
AW: Was würdet ihr von einem try-except-finally-Konstrukt halten?
Zu dieser Idee gibt es schon einige Threads, da müssten eigentlich sämtliche Pros und Contras erörtert worden sein.
|
AW: Was würdet ihr von einem try-except-finally-Konstrukt halten?
Die nächste Steigerungsstufe wäre dann:
Delphi-Quellcode:
Und das Free kann man sich sparen, weil der Compiler Code erzeugt, mit dem der Destruktor nach dem "End" aufgerufen wird.
// ...
try (Obj := TMyClass.Create) // mach etwas mit dem Objekt ... except // behandele die Exception ... end; // ... 8-) |
AW: Was würdet ihr von einem try-except-finally-Konstrukt halten?
Als ich noch hauptsächlich in Java unterwegs war und dann zu Delphi kam war ich auch erstmal baff wie so etwas wie try..except..finally fehlen kann.
Ganz ehrlich: Ich vermisse es nicht im geringsten. Andere Dinge fehlen mir sehr viel mehr. Wenn man es denn wirklich einmal braucht ist ein try..(try..except)..finally allein durch die Einrückung schon übersichtlicher, finde ich. |
AW: Was würdet ihr von einem try-except-finally-Konstrukt halten?
Ich finde die Idee gut und vermisse das auch in Delphi seit ich vor Jahren das erste Mal in C# damit in Kontakt getreten bin.
Zitat:
Code:
using (HttpClient client)
{ DoSomethingWithClient(client); } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 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 by Thomas Breitkreuz