Hallo,
ich möchte in einer aufgerufenen Prozedur eine eigene Fehlerbehandlung realisieren. Falls ein Fehler auftritt, soll auch der Ablauf der aufrufenden Prozedur abgebrochen werden.
Zur Veranschaulichung mal etwas Beispielcode:
Delphi-Quellcode:
procedure TForm1.MachWas1;
begin
try
Memo1.Lines.Add('
MachWas1');
// hier würde irgendwas bearbeitet
raise Exception.Create('
');
// dabei tritt eine Exception auf
except
Memo1.Lines.Add('
FEHLER in MachWas1');
// Fehlerbehandlung
raise;
// erneutes Auslösen, für aufrufende Prozedur
end
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add('
Anfang');
try
(* try *)
Case Auswahl
of // Wir nehmen mal Auswahl := 1 an
1:
begin
MachWas1;
// hier tritt der Fehler auf,
// eigentlich sollte jetzt abgebrochen und
// zum finally-Block gesprungen werden
MachWas2;
MachWas3;
end;
2:
begin
MachWas1;
MachWas3;
end;
[...]
end;
(* except
end *)
finally
Memo1.Lines.Add('
Ende');
end;
end;
Prinzipiell ist der Programmablauf richtig. Das habe ich per Einzelschritt überprüft. Allerdings wird die
Exception nicht still verarbeitet, sondern per Messagebox gemeldet. Was eigentlich nicht so sein sollte.
Entferne ich jetzt die (* *) Kommentare, kommt die Messagebox nicht mehr. Das verstehe ich aber nicht. Eigentlich müßte das try..finally.. die
Exception doch schon abfangen.
Für Erklärungen und Vorschläge wäre ich sehr dankbar.
Gruß,
Stephan