Autor Beitrag
Frankieboy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65



BeitragVerfasst: So 01.11.09 12:59 
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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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

_________________
There are 10 types of people - those who understand binary and those who don´t.
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: 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
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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:
ausblenden 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

_________________
There are 10 types of people - those who understand binary and those who don´t.