Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verstaendnisfrage: try ... except ... wohin kommt finally? (https://www.delphipraxis.net/126199-verstaendnisfrage-try-except-wohin-kommt-finally.html)

mkmk 19. Dez 2008 20:52


Verstaendnisfrage: try ... except ... wohin kommt finally?
 
Guten Abend allerseits

Nach meinem Verstaendnis gehören zu einer Exception 3 Stufen:
Try: man versucht irgendwas zu machen
Catch: man faengt etwaige Fehler auf
Finally: man gibt etwaige Resourcen wieder frei. Wobei 'finally' auf alle Faelle angesprungen wird: ob nun ein Fehler aufgetreten ist oder nicht.

Soweit ich es verstanden habe gibt es in Delphi entweder ein Try-Except oder ein Try-Finally. Aber kein Try-Except-Finally.
Nur: wie macht man diese 3-stufige Exception-Handling in Delphi? Oder habe ich irgendwas komplet missverstanden?

MfG

Namenloser 19. Dez 2008 20:53

Re: Verstaendnisfrage: try ... except ... wohin kommt finall
 
Die einzige Möglichkeit, die ich kenne, ist folgende:
Delphi-Quellcode:
try
  try
    Do_Sth;
  except
    ...
  end;
finally
  ...
end;

SirThornberry 19. Dez 2008 21:07

Re: Verstaendnisfrage: try ... except ... wohin kommt finall
 
in Delphi gibt es folgende Varianten:
Delphi-Quellcode:
try
  //kritischer Code
finally
  //wird immer ausgeführt
end;
//wird nur ausgeführt wenn kein Fehler auftrat
Delphi-Quellcode:
try
  //kritischer Code
except
  //wird nur ausgeführt wenn ein Fehler auftrat
end;
//wird immer ausgeführt

mkmk 19. Dez 2008 21:17

Re: Verstaendnisfrage: try ... except ... wohin kommt finall
 
@SirThornberry

Okay, wenn das die Regeln sind: ich kann mich daran gewöhnen. Ich war nur etwas verunsichert und war der Meinung, etwas komplett misverstaden zu haben.

Aber die Lösung von NamenLozer ist nicht schlecht. Werde sie mal bei Gelegenheit austesten.

Allen einen schönen Abend.

SirThornberry 19. Dez 2008 21:19

Re: Verstaendnisfrage: try ... except ... wohin kommt finall
 
wie sieht das von dir beschriebene try-catch-finally aus? wird das außerhalb des Blockes nie ausgeführt? oder nur wenn kein Fehler auftritt? Und wie müsste man mit try-catch-finally das ganze bauen damit das außerhalb des Blockes immer ausgeführt wird?

Apollonius 19. Dez 2008 21:28

Re: Verstaendnisfrage: try ... except ... wohin kommt finall
 
Die Regel, dass Code nach einem Except-Abschnitt immer ausgeführt wird, gilt nur, wenn keine Exception-Filter verwendet werden. Ich halte es für fatal, dass die meisten Delphi-Programmierer diese normalerweise nicht verwenden. Ich finde, dass man sich in dieser Hinsicht eine Scheibe von Java abschneiden sollte: Dort fängt man normalerweise nur von Exception abgeleitete Klassen. Exceptions wie OutOfMemoryError oder StackOverflowError sind davon nicht berührt.

khh 20. Dez 2008 06:47

Re: Verstaendnisfrage: try ... except ... wohin kommt finall
 
Zitat:

Zitat von mkmk
@SirThornberry

Okay, wenn das die Regeln sind: ich kann mich daran gewöhnen. Ich war nur etwas verunsichert und war der Meinung, etwas komplett misverstaden zu haben.

Aber die Lösung von NamenLozer ist nicht schlecht. Werde sie mal bei Gelegenheit austesten.

Allen einen schönen Abend.


diese Lösung ist so allgemein gebräuchlich.


Gruss KH


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 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