In VCL-Anwendungen Exceptions behandeln

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Exceptions - Index

Wenn Sie in Anwendungen VCL-Komponenten oder die VCL-Laufzeitbibliothek benutzen, müssen Sie den VCL-Exception-Behandlungsmechanismus verstehen. Exceptions sind in viele VCL-Klassen und Routinen integriert und werden automatisch ausgelöst, wenn etwas Unerwartetes geschieht. Die meisten Komponenten-Exceptions weisen auf Programmierfehler hin, die andernfalls Laufzeitfehler generieren würden. Einige dieser Klassen sind unter VCL-Exception-Klassen beschrieben.

Grundsätzlich besteht kein Unterschied zwischen der Behandlung von Komponenten-Exceptions und anderen Exceptions-Typen.

Wenn Sie die Exception nicht selbst behandeln, führt die VCL eine Standardbehandlung durch. Normalerweise wird eine Meldung mit einer Beschreibung des Fehlertyps angezeigt. Beim Debuggen einer Anwendung können Sie die Exception-Klasse in der Online-Hilfe nachschlagen. Diese Informationen können Ihnen häufig dabei helfen herauszufinden, wo und warum der Fehler aufgetreten ist.

Bestimmte Exception-Klassen zeigen keine Fehlermeldung an, wenn sie durch die Standardbehandlungsroutinen abgefangen werden. Diese Exceptions werden unter Stille Exceptions beschrieben.

Eine häufige Fehlerursache in Komponenten sind Bereichsfehler bei indizierten Eigenschaften. Enthält ein Listenfeld beispielsweise drei Elemente (0..2) und greift die Anwendung auf das Element mit dem Index 3 zu, löst das Listenfeld wegen der Bereichsüberschreitung eine Exception aus.

Die folgende Ereignisbehandlungsroutine enthält eine Exception-Behandlungsroutine, die den Benutzer in einem Fenster auf den ungültigen Indexzugriff im Listenfeld hinweist:

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   ListBox1.Items.Add('a string');{ String in Listenfeld einfügen }
   ListBox1.Items.Add('another string');{ Zweiten String einfügen... }
   ListBox1.Items.Add('still another string');{ ...Dritten String einfügen }
   try
     Caption :=  ListBox1.Items[3];{ set form caption to fourth string }
   except
     on EStringListError do
       ShowMessage('Listenfeld enthält weniger als vier Strings');
   end;
 end;


Wenn Sie einmal auf die Schaltfläche klicken, enthält die Liste nur drei Strings. Der Zugriff auf den vierten String (Items[3]) löst deshalb eine Exception aus. Sobald Sie ein zweites Mal auf die Schaltfläche klicken, werden weitere Strings in die Liste eingefügt. Es kommt also nicht mehr zu einer Exception.

Neben den von der VCL generierten Exceptions können Sie auch eigene VCL-basierte Exception-Klassen definieren und auslösen. Einzelheiten hierzu finden Sie unter Eigene VCL-Exceptions definieren.

Siehe auch