Show TOC

Dokumentation zur VorgehensweiseAusnahmebehandlung Dieses Dokument in der Navigationsstruktur finden

Voraussetzungen

Für die Ausnahmebehandlung benötigen Sie folgende Klassen:

  • JCoException: dies ist das Basis-Interface für Ausnahmen.

    • ABAPException: spezielle Klasse für Fehler, die im RFM ausgegeben wurden.

      AbapException tritt auf, wenn der von Ihnen aufgerufene ABAP-Code eine Ausnahme ausgibt.

  • JcoRuntimeException: Basis-Klasse für Runtime Exceptions.

    • ConversionException: spezielle Klasse für Konvertierungsfehler.

      ConversionException wird immer dann ausgegeben, wenn Sie eine Getter- oder Setter-Methode aufrufen die eine Konvertierung erfordert und diese Konvertierung scheitert.

    • XMLParserException: Verwendung bei Fehlern im XML Parser

      XMLParserException wird vom XML Parser ausgegeben, wenn Fehler in der RFC-Kommunikation bei Verwendung komplexer Parameter auftreten.

SAP JCo gibt Ausnahmen als Unterklasse von JCoException oder JCoRuntimeException aus.

Hinweis Hinweis

Runtime Exceptions werden im Unterschied zu JCo-Releases <3.0 nur noch in wenigen Fällen ausgegeben.

Ende des Hinweises.

In der Regel wird eine Ausnahme als 'geprüfte' Ausnahme, d.h. als Unterklasse von JCoException ausgegeben.

Bei der Verwendung dieser 'normalen' Ausnahmen muss in jedem Fall eine Entscheidung getroffen werden, ob eine Ausnahme explizit behandelt oder der throws clause hinzugefügt wird.

Hinweis Hinweis

Grundsätzlich wird empfohlen, try/catch im Code zu verwenden.

Ende des Hinweises.

Syntax Syntax

Ausnahmebehandlung - Option 1

  1.  public void executeFunction(JCO.Function function, String where)
  2.     throws JCoException
  3. {
  4.     JCoDestination destination=JCoDestinationManager.getDestination(where);
  5.     function.execute(destination);
  6. }    
Ende des Codes

Syntax Syntax

Ausnahmebehandlung - Option 2

  1. public int executeFunction(JCO.Function function, String where)
  2. {
  3.     int returnCode=0;
  4.     try
  5.     {
  6.         JCoDestination destination=JCoDestinationManager.getDestination(where);
  7.         function.execute(destination);
  8.      }
  9.     catch (AbapException ex) //Klausel 1
  10.     {
  11.         handleAbapException(function, ex);
  12.         returnCode=1;
  13.     }
  14.     catch (JCoException ex) //Klausel 2
  15.     {
  16.         logSystemFailure(ex);
  17.         returnCode=2;
  18.     }
  19.     catch (JCoRuntimeException ex) //Klausel 3
  20.     {        
  21.     }
  22.     catch (Exception ex) //Klausel 4
  23.     {
  24.     }
  25.     return returnCode;
  26. }
Ende des Codes

Es gibt also vier catch - Klauseln:

  • In der ersten verwenden Sie die Methode getKey(), um auf den exception string zuzugreifen, der vom SAP-System zurückgegeben wird. Ist dies NOT_FOUND, wird ein eigener Text ausgegeben, für alle anderen Ausnahmen verwenden Sie getMessage(), um einen geeigneten Text zu generieren. Auf diese Weise können Sie zwischen verschiedenen ABAP-Ausnahmen unterscheiden, die Sie auf spezifische Weise behandeln möchten, während alle anderen generisch behandelt werden. Da alle exception strings in SAP definiert werden, kennen Sie sie schon im Voraus.

  • Die zweite und dritte Klausel betreffen alle andern JCo-relevanten Probleme. Dies schließt Konvertierungsfehler und andere in SAP JCo aufgetretene Fehler ein.

  • Die dritte Klausel betrifft alle anderen Ausnahmen die in Ihrem Code aufgetreten sein könnten.

    Hinweis Hinweis

    Beachten Sie bitte, dass es sich auch hier um eine Beispielbeschreibung handelt. Je nach den konkreten Anforderungen Ihres Codes kann es notwendig sein, die Fehlerbehandlung anzupassen.

    Ende des Hinweises.
Weitere Informationen

Eine ausführliche Beschreibung der einzelnen Ausnahme-Klassen finden Sie im JCo-Javadoc im Installationsverzeichnis docs.