AGB  ·  Datenschutz  ·  Impressum  







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

Schleifenabbruch durch exception verhindern

Ein Thema von bernhard_LA · begonnen am 22. Jan 2015 · letzter Beitrag vom 22. Jan 2015
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.073 Beiträge
 
Delphi 12 Athens
 
#1

AW: Schleifenabbruch durch exception verhindern

  Alt 22. Jan 2015, 13:25
Die Schleife wird ja auf jeden Fall komplett durchlaufen, nur der riesige try-finally-Block halt nicht.
Nee! Die Schleife bricht nach dem finally ab und die Exception wird an die nächste Ebene weitergereicht.

So könnte man es lösen:

Delphi-Quellcode:
  for i := 0 to MaxLoop do begin
    aClass := TClass.Create();
    try
      try
        aClass.DoA;
        AClass.Do;

        if aClass.result > 0 then begin
          /// Ergebnisse auswerten
        end;
      except
        { Bug noch diesen Monat fixen! }
        if Now > EncodeDate(2015, 1, 31) then
          raise;
      end;
    finally
      aClass.Free;
    end;
  end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Schleifenabbruch durch exception verhindern

  Alt 22. Jan 2015, 13:42
Hopsa, mit try-except verwechselt ... peinlich.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Schleifenabbruch durch exception verhindern

  Alt 22. Jan 2015, 16:21
Hopsa, mit try-except verwechselt ... peinlich.
was fehlt ist ein

Delphi-Quellcode:
try

FinallyAndExcept
end;
Mavarik
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.114 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Schleifenabbruch durch exception verhindern

  Alt 22. Jan 2015, 16:26
wat
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Schleifenabbruch durch exception verhindern

  Alt 22. Jan 2015, 16:34
wie oft hat man

Delphi-Quellcode:
try
 try
 except
 end;
finally
end;
besser ein

Delphi-Quellcode:
try
...
FinallyAndExcept
end;
Dat is nen Featurerequst @EMBT
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.114 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Schleifenabbruch durch exception verhindern

  Alt 22. Jan 2015, 16:59
In Java gibt es bspw.
Code:
try {
   // Stuff
}
catch(IOException e) {
   System.out.println("Exception: ");
   e.printStackTrace();
}
finally {
   // Stuff
}

Das zwingend in try..except und try..finally aufzusplitten ist eins der wenigen Dinge die ich in Pascal irgendwie schöner als anderswo finde.

Liegt wahrscheinlich an der Einrückung, man sieht so deutlicher was auf jeden Fall abläuft und was nur im Fehlerfall. In Javas try..catch..finally sieht das alles gleichberechtigt aus.

Geändert von Der schöne Günther (22. Jan 2015 um 17:03 Uhr)
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

AW: Schleifenabbruch durch exception verhindern

  Alt 22. Jan 2015, 17:00
Dat is nen Featurerequst @EMBT
+ 1
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.230 Beiträge
 
Delphi 12 Athens
 
#8

AW: Schleifenabbruch durch exception verhindern

  Alt 22. Jan 2015, 17:06
Finally wird immer verarbeitet und wenn man zwischen Finally und End eine aktuell eventuell vorhandene Exception verwirft, dann hätte man auch jetzt schon sein Try-Finally&Except.
Wenn man nur prüfen will, ob eine Exception auftrat, um diese eventuell zu loggen, aber nicht um sie zu behandeln, dann reicht ebenfalls ein Try-Finally und ein 22-buchstabiger Befehl.

Aber ja, um 2-3 Zeilen und eine Ebene in der Einrückung zu sparen, wäre ein Try-Finally-Except-End, bzw. Try-Except-Finally-End bestimmt ganz nett.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (22. Jan 2015 um 17:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.073 Beiträge
 
Delphi 12 Athens
 
#9

AW: Schleifenabbruch durch exception verhindern

  Alt 22. Jan 2015, 16:33
was fehlt ist ein

Delphi-Quellcode:
try

FinallyAndExcept
end;
Das ist aber wieder etwas anderes, denn das finally wird immer ausgeführt, während das except nur im Fehlerfall ausgeführt wird. Aber sowas hier wär manchmal schön:

Delphi-Quellcode:
try
  ...
except
  ...
finally
  ...
end;
Wobei ich mir da sogar vorstellen kann, daß man über die Anordnung try - except - finally oder try - finally - except auch festlegen kann, ob der except- oder der finally-Code erst ausgeführt werden soll. Aber ehrlich gesagt tun es ja auch die beiden geschachtelten try-Blöcke.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:01 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