Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Codeblock mit Exception vorzeitig abbrechen


Frankieboy - So 01.11.09 12:59
Titel: Codeblock mit Exception vorzeitig abbrechen
Ich habe in menem Programm einen Block von Code, der ausgeführt wird (es werden Dateien gesucht und gefiltert).

Falls in der Mitte klar ist, dass keine oder nur wenige Dateien gefunden wurden, sollte die Ausführung des Rests vorzeitig abgebrochen werden. Ich habe mir überlegt, dass dies am besten mit try except end funktionieren würde (hier wird ja der Rest des Codes nicht mehr ausgeführt, sobald eine Exception auftritt, oder?)...

Also so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
begin
  try
    [Block 1 - Dateien aus dem Verzechnis auslesen]
    if AnzahlDateien < 2 then
      Excpetion.Create('No duplicate files found');
    [Block 2 - Dateien filtern]
  except
  end;
end;


Leider wird weder der Exceptiondialog angezeigt, wenn AnzahlDateien kleiner 2 ist, noch wird die Ausführung des Codes abgebrochen...

Was kann ich machen? :? Oder gibt es noch eine andere Möglichkeit?

Danke,

Frank


Narses - So 01.11.09 13:40

Moin!

Also bei mir funktioniert das einwandfrei, deshalb stellt sich die Frage, was da noch so im Code passiert. :nixweiss:

Aaaber: (user profile iconalzaimars "Exceptions sind keine Krankheit"-Weisheit im Hinterkopf habend) Warum du hier überhaupt mit einer Exception hantierst, ist mir unklar. Das ist doch ein ganz "normaler" Fall, dass nicht genug Dateien vorhanden sind, sowas muss man doch nicht als "Ausnahme" behandeln - mit ensprechendem Overhead (den man zugegeben nicht sieht). Hier fände ich ein if-Konstrukt absolut angemessen. Vor mir aus ein Exit, wenn´s denn unbedingt sein muss, aber keine Exception. :idea:

cu
Narses


dummzeuch - So 01.11.09 22:35

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:

Warum du hier überhaupt mit einer Exception hantierst, ist mir unklar.


Genau! Da gehoert ein Goto hin!

SCNR
twm


Delete - So 01.11.09 22:55

Man kann auch mit Exceptions arbeiten. Aber dann würde ich da eine Exception werfen und diese dann im aufrufenden Code abfangen.


Narses - So 01.11.09 23:25

Moin!

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Man kann auch mit Exceptions arbeiten. Aber dann würde ich da eine Exception werfen und diese dann im aufrufenden Code abfangen.
Mal wieder glasklar erkannt ;) ich hatte natürlich das raise beim Test implizit ergänzt, ist mir gar nicht aufgefallen... :oops:
user profile iconFrankieboy hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
begin
  try
    [Block 1 - Dateien aus dem Verzechnis auslesen]
    if AnzahlDateien < 2 then
      raise Exception.Create('No duplicate files found');
    [Block 2 - Dateien filtern]
  except
  end;
end;
cu
Narses