AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ersetzt try..except begin..end?

Ein Thema von messie · begonnen am 20. Sep 2007 · letzter Beitrag vom 20. Sep 2007
Antwort Antwort
Seite 2 von 3     12 3      
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: ersetzt try..except begin..end?

  Alt 20. Sep 2007, 10:15
Zitat von messie:
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.
Doch, denn der beginn...end Block bezieht sich auf as 'on e:...'.
Du kannst ja auch schreiben
Delphi-Quellcode:
...
except
  on e:EEineException do begin
   TuWasMitderEinenException
   ...
  end;
  on e:EAndereException do begin
   TuWasMitderAndereException
   ...
  end;
end;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#12

Re: ersetzt try..except begin..end?

  Alt 20. Sep 2007, 10:17
Zitat von Sidorion:
while..end
bei mir sieht das so aus:
Delphi-Quellcode:
while (...) begin
end;
Richard Mahr
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: ersetzt try..except begin..end?

  Alt 20. Sep 2007, 10:21
Zitat von Tormentor32:
Zitat von Sidorion:
while..end
bei mir sieht das so aus:
Delphi-Quellcode:
while (...) begin
end;
Und bei mir
Delphi-Quellcode:
while (...) do begin
end'
Ich glaube ja, Sidorion meint das gleiche wie du.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: ersetzt try..except begin..end?

  Alt 20. Sep 2007, 10:24
Zitat von Sidorion:
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.
Ob sinnvoll oder nicht, steht nicht zur Debatte.
Laut Styleguide gehört nach einem if immer ein begin/end.
Da ist es egal, ob ein try..except-Block oder ne Anweisung oder ein anderer Anweisungsblock kommt.

Ich vermute mal, die meisten hier haben noch nie in einer grösseren Firma gearbeitet, wo mehrere Leute gleichzeitig am selben Projekt arbeiten.
Da MUSS man nach Styleguide arbeiten, weil nicht erst jeder den Code nach seinen Belieben umformatieren kann.
Wenn ich alleine in meinem Kämmerlein an einem Projekt arbeite, dann kann ich mir schon einen eigenen exotische n Stil überlegen, sodass keiner mehr mit dem Code klarkommt.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#15

Re: ersetzt try..except begin..end?

  Alt 20. Sep 2007, 10:25
Da war ich wieder mal zu schnell und hab nicht genug nachgedacht

Was du geschrieben hast meinte ich... Es ging mir darum, dass bei while halt doch begin end benötigt wird.
Richard Mahr
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#16

Re: ersetzt try..except begin..end?

  Alt 20. Sep 2007, 10:29
Ich meinte While..do . Allerdings fällt mir grad auf, dass while nicht in die Aufzählung von mir passt (genau wie for und if), da dieses eine Einzelanweisung ist, die lediglich die folgende mehrfach wiederholt.

p.s.: Sorry ich wollte keinen Kleinkrieg über Styles lostreten. Asche auf mein Haupt.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#17

Re: ersetzt try..except begin..end?

  Alt 20. Sep 2007, 10:35
Zitat von Sidorion:
Ich meinte While..do . Allerdings fällt mir grad auf, dass while nicht in die Aufzählung von mir passt (genau wie for und if), da dieses eine Einzelanweisung ist, die lediglich die folgende mehrfach wiederholt.
Und da drauf wollte ich mit meinem Post hinweisen, aber ich habs gründlich vergeigt.

Edit: Buchstabendreher
Richard Mahr
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#18

Re: ersetzt try..except begin..end?

  Alt 20. Sep 2007, 12:03
Zitat von messie:
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;
Ergänzung: nicht nur! Innerhalb des Except / End Blockes ist die globale Variable ExceptObject gültig und diese enthält die aktuelle Exception.

Delphi-Quellcode:
try
  // ...
except
  if ExceptObject is meinException then
    ShowMessage(meinException(ExceptObject).DeineMessage)
  else if ExceptObject is andereException then
    ShowMessage(andereException(ExceptObject).AndereMessage)
  else
    ShowMessage(Exception(ExceptObject).ClassName + ' ' + Exception(ExceptObject).Message);
end;
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#19

Re: ersetzt try..except begin..end?

  Alt 20. Sep 2007, 12:55
Delphi-Quellcode:
if x then
begin
  try
  except
  end;
end;
Kannst du das äußere begin end gleich nach der IF Abfrage weg lassen ohne das sich was an der Funktionalität verändert ?

Ja, also ist es sinnvoll es auch wegzulassen da es ein redundanter Source ist. Jeden überflüssige Zeile im Source sollte nach Möglichkeit auch eliminiert werden da sich so zwangsläufig die Lesbarkeit und damit Verständlichkeit des Sources erhöht.

Delphi-Quellcode:
if x then
begin
  try
  except
  end;
end else
begin
  try
  except
  end;
end;

// würde so aussehen

if x then
try
except
end else
try
except
end;
Bei

Delphi-Quellcode:
if x then
begin
  try
  finally
  end;
end;
ist es schon wieder eine andere Pronlematik. zb. wenn

Delphi-Quellcode:
if x then
begin
  Object := TObject.Create;
  try
  finally
    Object.Free;
  end;
end;

// falsch wäre hier

if x then
try
  Object := TObject.Create;
finally
  Object.Free;
end;

// oder unellegant wäre

Object := nil;
if X then
try
  Object := TObject.Create;
finally
  Object.Free;
end;
Der letzere Falle ist deshalb eine Krücke da wir ja auch verschachtelte IF Abfragen haben könnten. Es verführt dann dazu gleich am Begin einer Funktion alle diese Objecte erstmal auf nil zu setzen. Je nach Path werden aber bestimmte Variablen dann garnicht benötigt und das fürht dazu das der Compiler schlechter den besten Code erzeugen kann, eben weil wir die Variablen schon in Advance benutzt haben.

In diesem Falle wäre also ein begin end mit enthaltenem try finally Block sauberer.

Gruß Hagen
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#20

Re: ersetzt try..except begin..end?

  Alt 20. Sep 2007, 13:01
Zitat von negaH:
Delphi-Quellcode:
// falsch wäre hier
if x then
try
  Object := TObject.Create;
finally
  Object.Free;
end;
Warum wäre das falsch? Es ist nicht dieselbe Funktion aber warum nicht?

Grüße, Messie
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:41 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