Wenn Sie einen RFC-Aufruf des Typs aRFC (asynchroner RFC) mit Rückantwort (RECEIVE RESULTS FROM FUNCTION) verwenden, unterscheidet sich die Übermittlung des Ausnahmeobjekts an den RFC-Client von den übrigen RFC-Typen in folgenden Punkten.
Der EXCPETIONS-Block in der Anweisung RECEIVE RESULTS FROM FUNCTION ist immer dann erlaubt, wenn die entsprechende Anweisung CALL FUNCTION auch einen EXCEPTIONS-Block enthält. Umgekehrt darf der EXCEPTIONS-Block auch nur dann ausgelassen werden, wenn dies in beiden Anweisungen geschieht. Die entsprechende Prüfung wird in durch die Laufzeit durchgeführt.
Hinweis
Eine abweichende Verwendung des EXCPETIONS-Blocks führt zu einem Laufzeitfehler. Da die Zuordnung der beiden Anweisungen nicht eindeutig ist, wird eine Syntaxprüfung nicht unterstützt.
Wird der Funktionsaufruf ohne EXCEPTIONS-Block implementiert, sollte die Rückruf-Routine als Methode (referenziert über den CALLING-Zusatz) implementiert werden.
Die klassenbasierte Ausnahme kann über TRY...CATCH...ENTDTRY abgefangen werden, wenn die Anweisung RECEIVE RESULTS FROM FUNCTION in diesem Block enthalten ist (oder in Methoden/Formularen, die in diesem Block aufgerufen werden).
Klassenbasierte Ausnahmen müssen innerhalb der Rückruf-Routine abgefangen und behandelt werden und können nicht nach außen propagiert werdeen. Jede nicht abgefangene Ausnahme führt zum Laufzeitfehler UNCAUGHT_EXCEPTION.
Wenn die klassenbasierte Ausnahmebehandlung aktiv ist und die Anweisung RECEIVE RESULTS FROM FUNCTION in der Rückruf-Routine fehlt, wird ein Laufzeitfehler ausgegeben.
Hinweis
Für die anderen RFC-Typen mit asynchronen Eigenschaften (aRFC ohne Rückantwort, tRFC, qRFC, bgRFC) müssen diese Besonderheiten nicht beachtet werden, da
beim aRFC ohne Rückantwort Ausnahmen grundsätzlich nicht zum RFC-Client transportiert werden.
bei tRFC, qRFC und bgRFC nicht das Clientprogramm die Rückantwort erhält, sondern die RFC-Schicht selbst die Behandlung aller Fehlersituationen (sowohl bei klassischen als auch bei klassenbasierten Ausnahmen) durchführt.