Der Epina Delphi-Kurs bietet Ihnen eine allgemeine Einführung in das Programmieren mit Delphi/Pascal. Mit vielen ausgearbeiteten Beispielen können Sie direkt in die Delphi-Programmierung einsteigen. Mehr dazu finden Sie hier.... |
Home Fehlerbehandlung Exceptions | ||||||||
See also: Debugger, Vordefinierte Exceptions | ||||||||
Exceptions
Diese beiden Fälle werden von Delphi sehr elegant mit den Konstruktionen try..except..end; und try..finally..end; abgedeckt.
ExceptionsUm Fehler abzufangen, könnte man im Prinzip jede Routine so schreiben, dass man jeweils einen Statuscode zurückgibt und den vom aufrufenden Programmteil entsprechend interpretieren lässt. Allerdings kann das sehr schnell zu einem aufgeblähten Code führen, da jeweils alle möglichen Fälle überprüft werden müssen und das auch für darunter liegende Schichten von Code gilt.Wesentlich einfacher kann man das durch eine zentraliserte Handhabung von Fehlerzuständen lösen - dazu dienen die sogenannten "Exceptions" (Ausnahmezustände), die bei Fehlerzuständen ausgelöst werden und dem Programmierer die Möglichkeit geben, korrigierend einzugreifen (und eine damit eine Fehlermeldung zu vermeiden). Reagiert man auf auftretente Exceptions nicht, so läuft das Programm in den Windows-eigenen Fehlerbehandlungsmechanismus, der meist in einem Abbruch des Programms (mit entsprechend nichtssagender Fehlermeldung) endet.
try..except..endDie Anwendung von except ist ganz einfach: Man setzt potentiell risikoreichen Code zwischen try und except, und schreibt zwischen except und end die entsprechende Fehlerbehandlungsroutine:try // hier steht der Risiko-Code except // hier die Fehlerbehandlungsroutine end;Die Fehlerbehandlungsroutine wird immer dann aufgerufen, wenn ein Fehler im try..except Teil auftritt. Das gilt auch für Unterprogramme die in diesem Teil aufgerufen werden und keine eigene Fehlerbehandlungsroutine besitzen. Um nun auf verschiedene Fehlerarten auch verschieden reagieren zu können, kann man im except-Teil die Schlüsselwörter on und else einsetzen: try // irgendwas except on EIntOverflow do HandleOverflow; on EMathError do HandleGeneralMethError; else HandleUnknownError; end;
try..finally..endTritt in einem Codeabschnitt ein Fehler auf, so bricht die Abarbeitung des Codes unmittelbar an der fehlerhaften Stelle ab. Dasselbe gilt bei der Durchführung eines Exit-Befehls. Das kann dazu führen, dass eventuell notwendiger Code (z.B. zum "Aufräumen" des Speichers) nicht mehr ausgeführt wird. Für diesen fall setzt man die try..finally..end-Konstruktion ein. Die Syntax entspricht exakt der von except:try // beliebiger Code finally // Code der unbedingt ausgeführt werden muss end;
|
||||||||
Home Fehlerbehandlung Exceptions |
Last Update: 2008-09-09