Zitat von
ozz:
Hallo zusammen,
gibt es eigentlich auch eine Möglichkeit, für das nachfolgende Beispiel auch eine Möglichkeit, mehrere Exceptions zusammenzufassen? Natürlich kann ich eine Procedure oder Funktion angeben.
Eine direkte Möglichkeit gibt es dafür nicht, was aber auch gar nicht so schlecht ist. An sich möchtest du hier gerade verschiedene Fehler erkennen und unterscheiden (solltest diese also auch unterschiedlich abfangen können). Willst du mehr als einen Fehler auf gleiche Weise behandeln, so spricht einiges dafür, dass es sich um die selbe Fehlerklasse (nicht die gleiche Delphi-Klasse!) handelt. Fehlerklassen werden natürlich auch auf Klassen in Delphi abgebildet, hier könntest du also z.B. alle EMathError Exceptions abfangen und behandeln (EZeroDivide und EOverflow sind nur spezielle EMathError).
In einer Behandlung hast du zudem natürlich die Möglichkeit zu schauen, welche Klasse ein Fehler hat:
Delphi-Quellcode:
procedure handleException(e:
Exception);
begin
if (e.ClassType = EZeroDivide)
or (e.ClassType = EOverflow)
then
begin
// ...
end;
end;
Schöner (eindeutiger) ist es aber trotzdem, wenn du hier wirklich gleichartige Fehler durch eine eigene Methode behandelst, also die Klassenhierachie auch ausnutzt.
Gruß Der Unwissende