![]() |
ersetzt try..except begin..end?
Moin,
eine Frage zur Hierarchie bei der Codeabarbeitung: entspricht
Delphi-Quellcode:
?
if Moin then
try //.. except end; if Moin then begin //... end; Grüße, Messie |
Re: ersetzt try..except begin..end?
nein aber:
Delphi-Quellcode:
if Moin then
try //.. except end; if Moin then try begin end; except begin end; end; |
Re: ersetzt try..except begin..end?
wäre nie auf die idee gekommen, aber bei mir tuts das sehr wohl.
|
Re: ersetzt try..except begin..end?
Habe es mal getestet,
Delphi-Quellcode:
Es wird keine der Messages angezeigt.i := 0; If i = 1 Then Try ShowMessage('1'); ShowMessage('2'); Except End;
Delphi-Quellcode:
Es wird ebenfalls keine der Messages angezeigt.
i := 0;
If i = 1 Then Begin ShowMessage('1'); ShowMessage('2'); End;
Delphi-Quellcode:
Es wird Message 2 angezeigt.
i := 0;
If i = 1 Then ShowMessage('1'); ShowMessage('2'); Somit ist klar, dass try..except sich diesbezüglich wie begin..end verhält |
Re: ersetzt try..except begin..end?
doch. eigentlich lässt sich die frage mit "ja" beantworten. der try..except-block würde nur bei moin=true ausgeführt - genau wie der begin..end-block.
|
Re: ersetzt try..except begin..end?
Dafür gibt es zwei Referenzen:
a) die Delphi-Hilfe b) der Borland Style-Guide Zwischen try und except gehört kein begin / end. Genauso wenig wie zwischen except und dem dazugehörenden end. also soll es so aussehen:
Delphi-Quellcode:
try
Anweisung1; Anweisung2; Anweisung3; except Anweisung4; Anweisung5; end; |
Re: ersetzt try..except begin..end?
Das ist doch im Prinzip das Gleiche wie bei repeat until, da wird alles was da zwischen ist eingeschlossen un smoit kein begin end benötigt...
|
Re: ersetzt try..except begin..end?
Wenn ich nach except auf die Exception-Klasse Zugriff haben will, bekomme ich den nur mit
Delphi-Quellcode:
Also nicht ganz eindeutig. Zumal in dem Beispiel nur hierarchisch gleiche Anweisungen vorkommen. Ich hab' öfter mal verschachtelte try..except und try..finally-Blöcke.
try
//.. except on e:meineException do begin //.. end; end; Wo finde ich denn den Style Guide? Grüße, Messie |
Re: ersetzt try..except begin..end?
Den Style-Guide (oder zumindest Hinweise darauf) sollte mit der Suche hier im Forum zu finden sein.
Ansonsten google mit entsprechenden Begriffen füttern. Verschachtelte try..except funktionieren auch ohne begin/end. |
Re: ersetzt try..except begin..end?
try..except..end ist genau wie begin..end, repeat..until, while..end, case..end eine Anweisung (mit der Besonderheit, dass innderhalb dieser Anweisung weitere Anweisungen stehen können). Eine solche Anweisung kann überall stehen, wo auch eine 'normale' Anweisung stehen kann und wird als ganzes abgearbeitet.
Insofern lautet die Antwort: Nein. Begin..end wird nicht 'ersetzt' es ist eine gleichwertige Anweisung (oder auch Anweisungsblock, wers lieber mag). Ein try..except kann auch ein a:=7; 'ersetzen'. Ich persönlich halte es aber für sinnvoller, try..except nach einem If trotzdem in einem Begin..End zu kapseln, da sich dadurch die Lesbarkeit erhöht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 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