Ausnahmebedingungsbehandlung

EGL referenziert Programmfehler als Ausnahmebedingungen. Eine Ausnahmebedingung kann auftreten, wenn ein mit EGL generiertes Programm eine der folgenden Aktionen ausführt:

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).

Systemausnahmebedingungen

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.

Für alle Ausnahmebedingungen sind zwei Felder verfügbar:
messageID
Eine Zeichenfolge mit der ID der Ausnahmebedingung. Beispiel: EGL0050E
message
Eine Zeichenfolge mit einer Beschreibung der Ausnahmebedingung. Beispiel: "Überlauf aus Ausdruck 0 / 0". Wenn es sich um einen Fehler handelt, bei dem in EGL Version 6 die Variable 'sysVar.errorCode' gesetzt wird, enthält die Beschreibung den Wert dieses Fehlercodes (siehe errorCode).
Sie können die aktuelle Ausnahmebedingung bestimmen, indem Sie mehrere onException-Anweisungen verwenden:
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.


Feedback