Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ersetzt try..except begin..end? (https://www.delphipraxis.net/99965-ersetzt-try-except-begin-end.html)

messie 20. Sep 2007 08:22


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

SirThornberry 20. Sep 2007 08:24

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;

sirius 20. Sep 2007 08:27

Re: ersetzt try..except begin..end?
 
wäre nie auf die idee gekommen, aber bei mir tuts das sehr wohl.

s-off 20. Sep 2007 08:29

Re: ersetzt try..except begin..end?
 
Habe es mal getestet,

Delphi-Quellcode:
 
   i := 0;
   If i = 1 Then
   Try
      ShowMessage('1');
      ShowMessage('2');
   Except
   End;
Es wird keine der Messages angezeigt.

Delphi-Quellcode:
   i := 0;
   If i = 1 Then Begin
      ShowMessage('1');
      ShowMessage('2');
   End;
Es wird ebenfalls keine der Messages angezeigt.

Delphi-Quellcode:
   i := 0;
   If i = 1 Then
      ShowMessage('1');
   ShowMessage('2');
Es wird Message 2 angezeigt.

Somit ist klar, dass try..except sich diesbezüglich wie begin..end verhält

Meister Röhrich 20. Sep 2007 08:29

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.

RavenIV 20. Sep 2007 08:43

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;

Tormentor32 20. Sep 2007 08:45

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...

messie 20. Sep 2007 08:50

Re: ersetzt try..except begin..end?
 
Wenn ich nach except auf die Exception-Klasse Zugriff haben will, bekomme ich den nur mit
Delphi-Quellcode:
try
   //..
except
  on e:meineException do
  begin
  //..
  end;
end;
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.

Wo finde ich denn den Style Guide?

Grüße, Messie

RavenIV 20. Sep 2007 09:08

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.

Sidorion 20. Sep 2007 09:15

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 20:24 Uhr.
Seite 1 von 3  1 23      

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