Einzelnen Beitrag anzeigen

TPok

Registriert seit: 19. Jul 2004
Ort: Eisenach
25 Beiträge
 
Delphi 2005 Professional
 
#1

Behandlung von Exception in einer Prozedur

  Alt 21. Apr 2005, 18:19
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
Stephan Fietzek
  Mit Zitat antworten Zitat