Show TOC Anfang des Inhaltsbereichs

Vorgehensweisen Ausnahmebehandlung  Dokument im Navigationsbaum lokalisieren

Voraussetzungen

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

 

·         JCO.Exception: dies ist die Basis-Klasse für Ausnahmen.

·         JCO.ConversionException: Unterklasse für Konvertierungsfehler.

·         JCO.AbapException: Unterklasse für Ausnahmen, die im RFM ausgegeben wurden.

 

Verwendung

SAP JCo gibt Ausnahmen als Unterklasse von RuntimeException aus. Runtime Exceptions sollten nicht in der Signatur der Methode eingebunden oder definiert werden. Das kann zwar vorteilhaft sein, aber es ist auch gefährlich. Unproblematischer ist die lokale Fehlerbehandlung, da das Programm in diesem Fall noch weiß, in welchem Kontext der Fehler aufgetreten ist. Deshalb wird grundsätzlich empfohlen, try/catch im Code zu verwenden, selbst wenn der Compiler dies nicht anzeigt.

 

SAP JCo verfügt lediglich über drei Ausnahme-Typen:  JCO.Exception  und zwei Unterklassen, die Sie bei Bedarf separat rufen können. JCO.Exception verfügt darüber hinaus über eine getGroup()-Methode, mit der Sie zwischen verschiedenen Fehlertypen unterscheiden können. Eine Liste der Gruppen finden Sie im entsprechenden Javadoc im Installationsverzeichnis docs.

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

JCO.AbapException tritt auf, wenn der von Ihnen aufgerufene ABAP-Code eine Ausnahme ausgibt. Die Abbildung unten zeigt, wie zwischen verschiedenen Fehlertypen unterschieden werden kann (das Beispiel zeigt die Verwendung des RFMs DDIF_FIELDINFO_GET, mit dem Struktur- oder Tabellenmetadaten abgefragt werden können. Wurde ein ungültiger Name übergeben, wird von diesem RFM die Ausnahme NOT_FOUND ausgegeben):

Syntaxdokumentation

 Ausnahmebehandlung

catch (JCO.AbapException ex) {

 

   if (ex.getKey().equalsIgnoreCase("NOT_FOUND")) {

      

      System.out.println("Dictionary structure/table not found.");

      

      System.exit(1);

  

   }

  

   else {

     

      System.out.println(ex.getMessage());

     

      System.exit(1);

  

   }

 

}

 

catch (JCO.Exception ex) {

 

 

 

      ex.printStackTrace();

     

      System.exit(1);

  

   }

  

   catch (Exception ex) {

    

      ex.printStackTrace();

      

      System.exit(1);

 

   }

 

 

 

Es gibt drei  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 Klausel betrifft 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

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 Inhaltsbereichs