Sie können auswählen, welche Ausnahmebedingungen Sie behandeln wollen (nach Typ), oder Sie können alle Ausnahmebedingungen mit demselben Code behandeln. Die Behandlung einer Ausnahmebedingung bedeutet, dass das aktuelle Programm nicht beendet werden darf, sondern dass stattdessen eine spezielle Verarbeitung für den Fehler bereitgestellt wird. Darüber hinaus können Sie Ihre eigenen Ausnahmebedingungen auslösen, indem Sie die EGL-Anweisung 'throw' verwenden, um entweder dafür zu sorgen, dass eine vorhandene Ausnahmebedingung weitergegeben wird, oder um den Benutzer über einen Fehler zu benachrichtigen, den Ihr Programm selbst festgestellt hat. Siehe throw.
Der Mechanismus zur Behandlung von Fehlern in EGL ist der try-Block (siehe try). Alle Anweisungen, die innerhalb eines try-Blocks eine Ausnahmebedingung auslösen, veranlassen das Programm, nach einem übereinstimmenden onException-Block in demselben try-Block zu suchen. Ist ein onException-Block vorhanden, der die ausgelöste Ausnahmebedingung referenziert, geht die Steuerung an den Code in diesem Block über.
Ausnahmebedingungen werden nicht aus über Fernzugriff aufgerufenen Programmen oder Serviceaufrufen weitergegeben. Wenn ein über Fernzugriff aufgerufenes Programm aufgrund eines Fehlers beendet wird, empfangen Sie eine Ausnahmebedingung vom Typ 'InvocationException'. Wenn ein Serviceaufruf aufgrund eines Fehlers beendet wird, empfangen Sie eine Ausnahmebedingung vom Typ 'ServiceInvocationException'. Beide Typen enthalten die ursprüngliche Fehlerbeschreibung. Die Ausnahmebedingung 'InvocationException' enthält außerdem den Rückgabewert (returnValue) und die Fehlernummer (errno) des aufgerufenen Programms, sofern verfügbar.
Aus lokal aufgerufenen Programmen werden Ausnahmebedingungen normal weitergegeben.
Sie können auch eine ältere Methode der Ausnahmebedingungsbehandlung verwenden (siehe V6-Ausnahmebedingungskompatibilität verwenden).
EGL stellt eine Reihe von Systemausnahmebedingungen bereit, um die spezielle Art eines Laufzeitproblems anzugeben. Jede dieser Ausnahmebedingungen ist ein Datensatz mit dem Stereotyp 'Exception' (siehe Der Stereotyp 'Exception'), aus dem Sie Informationen abrufen können. Der onException-Block verwendet diesen Datensatztyp, um eine bestimmte Ausnahmebedingung abzufangen.
if (userRequest == "A")
try
add record1;
onException(ex1 FileIOException)
myErrorHandler(1);
onException(ex2 RuntimeException)
myErrorHandler(2);
onException(ex3 SQLException)
myErrorHandler(3);
onException(ex4 AnyException)
myErrorHandler(4);
end // try
end // if
Ausführliche Informationen zu Systemausnahmebedingungen finden Sie unter EGL-Ausnahmedatensätze.