![]() |
Re: Bubblen Exceptions nach oben durch einen try-finally-Blo
Das finally wird keine Exception schlucken, aber es wird trotzdem ausgeführt.
Aber die große Frage ist, warum du die Exception an der Stelle auf eine so fiese Art schlucken willst? Solche Art von Code sollte IMHO nur dann Exceptions schlucken, wenn sie recoverable sind, also wenn die App nach Ablauf der Funktion immer noch in einem konsistenten Zustand ist. Ein Beispiel wäre eine disconnected gracefully mit einem folgendem Reconnect. Wenn du eine Datei erzeugen willst, dies aber nicht möglich ist, kann sich deine Methode schlecht von dieser Ausnahme erholen. Sie hat also IMHO kein Recht die Ausnahme zu schlucken. Nur der Code, der die Funktion ausführt, kann das beurteilen. Und dann vielleicht auch den Benutzer benachrichtigen. |
Re: Bubblen Exceptions nach oben durch einen try-finally-Blo
Tja… da hast Du wirklich Recht.
Ich habe nur probiert Dein Konstrukt zu Recht zu biegen. Es geht dies z.B. auch so wie Dir Luckie jetzt gerade gezeigt hat (Hallo Lucke :-D ) In meinem Konstrukt wollte ich Dich nur auf die wichtigste Tatsache aufmerksam machen, dass man NIE die Routine FREE aufruft ohne vorher den Pointer zu überprüfen, da falls NIL dann hast Du ein echtes Problem. Gruß PaulJr. |
Re: Bubblen Exceptions nach oben durch einen try-finally-Blo
Zitat:
Zitat:
Zitat:
|
Re: Bubblen Exceptions nach oben durch einen try-finally-Blo
Habe natürlich Luckie :???: gemeint. Ja ich bin der "alte" PaulJr.
Gruß PaulJr. P.S. Ich meinte Luckie nicht Deine Routine (die ist OK!)sondern das was er programmiert hatte... |
Re: Bubblen Exceptions nach oben durch einen try-finally-Blo
Zitat:
Zitat:
Es kann also nach der der Erzeugung der Instanz unmöglich mit einer nil-Referenz gearbeitet werden. Exceptions gehören genauso zur Flusskontrolle wie Schleifen oder if-Statements. ;) Der Code von Luke wäre IMO in einer simpelsten Form auch am richtigsten:
Delphi-Quellcode:
btw: Bist du der PaulJr?
var
putNameHere : TSomeClas; begin putNameHere := TSomeClas.Create(); try putNameHere.SomeMethod(); putNameHere.SomeMethodThatThrows(); //wirft Exception! finally putNameHere.Free(); end; end; Ahh der rote Katen fehlte, du bist es also. Habe schon einiges von dir gehört. War allerdings bevor ein gewisser Robert_G dieses Forum heimsuchte. :mrgreen: |
Re: Bubblen Exceptions nach oben durch einen try-finally-Blo
Zitat:
EDIT:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var a: TObject; begin a:=nil; a.Free; //Das kracht nicht a.ClassType; //Das schon end; |
Re: Bubblen Exceptions nach oben durch einen try-finally-Blo
Zitat:
|
Re: Bubblen Exceptions nach oben durch einen try-finally-Blo
Ja Elvis :) , der bin ich…(bin für ein paar Jahre ausgestiegen… und jetzt bin ich zurück… und offensichtlich sollte ich etwas genauere Antworten geben: Versprochen :idea: )
Ja in diesem Fall hast natürlich Recht. Ich bin alte Programmierer und programmiere immer so… ist aber nicht so weiter wichtig… Gruß PaulJr. |
Re: Bubblen Exceptions nach oben durch einen try-finally-Blo
Var
StringList : TstringList; Begin StringList.Free; // da kommt leider Exeption… Das allerdings geht in die Hosen :shock: |
Re: Bubblen Exceptions nach oben durch einen try-finally-Blo
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01: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