Programmierkurs: Delphi: Pascal: Exceptions
Aus Wikibooks
[Bearbeiten] Exceptions
Exceptions (deutsch: Ausnahmen) sind eventuelle Fehler, die auftreten können. Anfänger sollten wissen, dass man diese Exceptions mit der Konstruktion try-except abfangen kann. Hier stehen noch ein paar weitere, detailliertere Informationen zu Exceptions.
[Bearbeiten] Abfangen von Exceptions
Erst einmal gibt es eine ganze Reihe vordefinierter Exceptions. Die bekanntesten Exception-Typen (jede Exception hat einen Klassentypen) sind wahrscheinlich EMathError, EConvertError und EZeroDivide. Vorallem der letzte tritt häufig auf, wenn man Ergebnisse zum Beispiel bei einem Taschenrechner nicht prüft. EZeroDivide könnte hier auftreten:
var a, b: Integer; begin a := 2; b := 0; Writeln(a / b); end;
In der Delphi-IDE kann man zwar Exceptions abschalten, davon wird es jedoch nicht besser. Ein weiteres Beispiel ist der EConvertError, der zum Beispiel auftritt, wenn man bei einer StrToInt eine ungültige Eingabe gemacht hat. Beide diese Exceptions sind bei einem Taschenrechner ziemlich wahrscheinlich. Lösung 1: Alles in einen try-except-Block packen und bei Except eine Writeln mit "Fehler!" ausgeben. Natürlich ginge auch "Division durch 0" oder irgendetwas! Jedoch wollen wir den User auch über seinen Fehler im Detail informieren. Beim Letzteren Beispiel könnte aber auch eine Eingabe falsch sein. Lösung: Exceptions!
try Writeln(a / b); except on EZeroDivide do Writeln('Fehler: Division durch 0!'; on EConvertError do Writeln('Fehler: Ungueltige Eingabe!'; end;
Damit wäre das Problem gelöst, der User wird über seinen Fehler informiert!
[Bearbeiten] Deklaration
Man kann für eine eigene Klassen auch eigene Exceptions erstellen. Genau genommen sind Exceptions sogar selbst Klassen. Beispiel:
EMyError = class(Exception);
Die Hierarchie würde nun so aussehen:
Exception │ └─── EMyError
Nun wird an einer Stelle (mit if abgefragt) eine Exception ausgelöst:
raise EMyError.Create;
Exceptions sollten immer ausgelöst werden, wo das Programm zusammenbrechen könnte, gerade dann, wenn man eine Klasse weitergeben möchte.
| Inhaltsverzeichnis | Einstieg |