AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Behandlung von Exception in einer Prozedur
Thema durchsuchen
Ansicht
Themen-Optionen

Behandlung von Exception in einer Prozedur

Ein Thema von TPok · begonnen am 21. Apr 2005 · letzter Beitrag vom 21. Apr 2005
Antwort Antwort
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
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Behandlung von Exception in einer Prozedur

  Alt 21. Apr 2005, 18:27
Falsch. Das try-finally macht genau das was es soll: es fuehrt etwas ganz sicher aus, egal ob ein Fehler auftritt oder mit exit rausgesprungen wird. Zum Behandeln von Exceptions muss immer try-except verwendet werden. Deshalb ist die Kapselung von try-finally und try-except durchaus der richtige Weg.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
TPok

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

Re: Behandlung von Exception in einer Prozedur

  Alt 21. Apr 2005, 18:50
Ahh. Na klar. Hatte nen Denkfehler. Ist ja logisch.

Danke dir,
Stephan
Stephan Fietzek
  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 04:52 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