Home » Tutorials » Object Pascal/RTL » Exceptions

Exceptions

try-except-Blöcke

Tritt in einer Delphi-Anwendung eine sogenannte Exception, also ein Fehler, auf, wird der normale Programmablauf an der aktuellen Stelle unterbrochen und alle folgenden Codezeilen bis zum Ende der Methode/Prozedur/Funktion unbearbeitet übersprungen. Außerdem wird eine mehr oder weniger aussagekräftige Fehlermeldung angezeigt.
Eine Exception ist immer von einem bestimmten Typ, wie die eben erwähnte EConvertError-Exception. Anhand des Typs kann man in der Regel erkennen, was für ein Fehler aufgetreten ist, hier ein Konvertierungs- also ein Umwandlungsfehler (von String in TDate).
Delphi bietet mit try und except eine komfortable Möglichkeit, Programmstellen, an denen Fehler auftreten können, speziell zu überwachen und evtl. auftretende Fehler gleich abzufangen und darauf zu reagieren.
Unser Beispiel von vorhin könnte dann z. B. so aussehen:

procedure TForm1.Edit1Exit(sender: TObject);
var datum: TDate;
begin
  try
    datum:=StrToDate(Edit1.Text);
  except
    ShowMessage('Hee! Hier darf nur ein gültiges Datum '+
    'eingegeben werden!');
    Edit1.SetFocus;
  end;
end;

Tritt also irgendwo zwischen try und except ein Fehler auf, wird der Programmablauf an dieser Stelle unterbrochen und nach dem folgenden except fortgesetzt. Im Beispiel: Geht die Konvertierung in ein Datum daneben, wird eine Meldung angezeigt und der Eingabefokus zurück in Edit1 gesetzt. Tritt kein Fehler auf, wird der Except-End-Abschnitt auch nicht durchlaufen.