diff --git a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jClassifConv.java b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jClassifConv.java
index a4fb39ec8c782f5c1f1e7aaffe69e2e65b5f9599..53d968fbea9838f632b763145247ef333b69273c 100644
--- a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jClassifConv.java
+++ b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jClassifConv.java
@@ -27,18 +27,22 @@ public class jClassifConv {
 
     public jClassifConv ()
     {
-	initClassifConv();
+        try {
+            initClassifConv();
+        } catch (Exception ex) {
+            System.out.println("Error during init: "+ex);
+        }
     }
 
-    private native void    initClassifConv();
-    public  native short   get(String jarg1);
-    public  native String  get(short jarg1);
+    private native void    initClassifConv() throws Exception;
+    public  native short   get(String jarg1) throws Exception;
+    public  native String  get(short jarg1) throws Exception;
 
     // java doesn't implement reference arguments, so the
     // initial call bool get(long type, string typename)
     // can't be made easily here/ Choice has been made to gather the complete
     // list in the c++ wrapper and return it completely here.
-    public  native HashMap<Short,String> getTypes();
-    public  native void    top();
-    public  native boolean next();
+    public  native HashMap<Short,String> getTypes() throws Exception;
+    public  native void    top() throws Exception;
+    public  native boolean next() throws Exception;
 } 
diff --git a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jInitCPPLogger.java b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jInitCPPLogger.java
index 68f585faf03037ed35a405e481adb184ce250ac1..86c96879049cb62383afea67c881f4ae9b8ade7d 100644
--- a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jInitCPPLogger.java
+++ b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jInitCPPLogger.java
@@ -25,9 +25,13 @@ package nl.astron.lofar.sas.otb.jotdb2;
 
 public class jInitCPPLogger {
     public jInitCPPLogger(String logName) {
-	initLogger(logName);
+        try {
+            initLogger(logName);
+        } catch (Exception ex) {
+            System.out.println("Error during initLogger :" +ex);
+        }
     }
 
-    private native void initLogger(String logName);
+    private native void initLogger(String logName) throws Exception;
 }
 
diff --git a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jOTDBconnection.java b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jOTDBconnection.java
index a4b3a2fcd3e9f5c421408c71e121d799c6f57884..ceccf3d78b7beb2fee0da086bd8954d344c4b91b 100644
--- a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jOTDBconnection.java
+++ b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jOTDBconnection.java
@@ -22,41 +22,48 @@
 package nl.astron.lofar.sas.otb.jotdb2;
 
 import java.util.Vector;
-import java.util.Date;
 
 public class jOTDBconnection
 {
     // Just creates an object and registers the connection parameters.
     public jOTDBconnection (String username, String passwd, String database)
     {
-	initOTDBconnection (username, passwd, database);
+        try {
+            initOTDBconnection (username, passwd, database);
+        } catch (Exception ex) {
+            System.out.println("Error during connection init :" + ex);
+        }
     }
 
    public jOTDBconnection()
      {
-	initOTDBconnection("paulus", "boskabouter", "otdbtest");
+        try {
+            initOTDBconnection("paulus", "boskabouter", "otdbtest");
+        } catch (Exception ex) {
+            System.out.println("Error during connection init :" + ex);
+        }
      }
    
    
     // Create a OTDBconnection instance
-    private native void initOTDBconnection (String username, String passwd, String database);
+    private native void initOTDBconnection (String username, String passwd, String database) throws Exception;
 
     // To test if we are (still) connected.
-    public native boolean isConnected();
+    public native boolean isConnected() throws Exception;
 
     // To connect or reconnect in case the connection was lost
-    public native boolean connect();
+    public native boolean connect() throws Exception;
     
     // get OTDBtree of one specific tree
-    public native jOTDBtree getTreeInfo (int atreeID, boolean isMomID);
+    public native jOTDBtree getTreeInfo (int atreeID, boolean isMomID)throws Exception ;
     
-    public native Vector getStateList(int atreeID, boolean isMomID ,String beginDate, String endDate);
+    public native Vector getStateList(int atreeID, boolean isMomID ,String beginDate, String endDate) throws Exception;
 
 
     // To get a list of all OTDB trees available in the database.
-    public native Vector getTreeList(short treeType, short classifiType);
+    public native Vector getTreeList(short treeType, short classifiType) throws Exception;
     
-    public native String errorMsg();
+    public native String errorMsg() throws Exception;
 
-    public native int getAuthToken();
+    public native int getAuthToken() throws Exception;
 }
diff --git a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jParamTypeConv.java b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jParamTypeConv.java
index bb8b2334bfba66e652fca07c386e3b266e5e9bc8..927d9b9d5dd41f30df263b629103dd4b8bc10b36 100644
--- a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jParamTypeConv.java
+++ b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jParamTypeConv.java
@@ -27,18 +27,22 @@ public class jParamTypeConv {
 
     public jParamTypeConv ()
     {
-	initParamTypeConv();
+        try {
+            initParamTypeConv();
+        } catch (Exception ex) {
+            System.out.println("Error during init :"+ex);
+        }
     }
 
-    private native void    initParamTypeConv();
-    public  native short   get(String jarg1);
-    public  native String  get(short jarg1);
+    private native void    initParamTypeConv() throws Exception;
+    public  native short   get(String jarg1) throws Exception;
+    public  native String  get(short jarg1) throws Exception;
 
     // java doesn't implement reference arguments, so the
     // initial call bool get(long type, string typename)
     // can't be made easily here/ Choice has been made to gather the complete
     // list in the c++ wrapper and return it completely here.
-    public  native HashMap<Short,String> getTypes();
-    public  native void    top();
-    public  native boolean next();
+    public  native HashMap<Short,String> getTypes() throws Exception;
+    public  native void    top() throws Exception;
+    public  native boolean next() throws Exception;
 } 
diff --git a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeMaintenance.java b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeMaintenance.java
index 339420907fbe2945b37825bb99808fc95cc9e994..62eec6f8440f6cd96ceb1ed781c82b88300bd371 100644
--- a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeMaintenance.java
+++ b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeMaintenance.java
@@ -28,38 +28,41 @@ public class jTreeMaintenance
 
     public jTreeMaintenance ()
     {
-	initTreeMaintenance ();
+        try {
+            initTreeMaintenance ();
+        } catch (Exception ex) {
+            System.out.println("Error during jTreeMaintenance init : " +ex);
+        }
     }
 
-    private native void initTreeMaintenance ();
+    private native void initTreeMaintenance () throws Exception;
 
     //# --- PIC maintenance ---
     // Once in a while a new PIC tree will be loaded from PVSS which manages
     // the master PIC. The master PIC will be in a exported ASCII file, with
     // loadMasterFile this file can be added.
     // Returns 0 on failure, otherwise the ID of the new tree is returned.
-    public native int loadMasterFile (String  filename);
+    public native int loadMasterFile (String  filename) throws Exception;
     
     //# --- VIC maintenance : Components ---
     // A VIC tree is build up from single components. The definitions of the
     // components can loaded from a file with this call
-    public native int loadComponentFile (String filename);
+    public native int loadComponentFile (String filename) throws Exception;
 
     // Find the top-components in the components table.
-    public native Vector<jVICnodeDef> getComponentList (String name , boolean topOnly);
+    public native Vector<jVICnodeDef> getComponentList (String name , boolean topOnly) throws Exception;
 
     // Get the node definition of a VC node
-    public native jVICnodeDef getComponentNode(int aNodeID)
-	;
+    public native jVICnodeDef getComponentNode(int aNodeID) throws Exception;
 
     // Get parameterlist of the component
-    public native Vector<jOTDBparam> getComponentParams(int aNodeID);
+    public native Vector<jOTDBparam> getComponentParams(int aNodeID) throws Exception;
 
     // Save new node or update the limits and description fields of the node
-    public native boolean saveComponentNode(jVICnodeDef  aNode);
+    public native boolean saveComponentNode(jVICnodeDef  aNode) throws Exception;
 
     // test if component is a top-component
-    public native boolean isTopComponent(int  aNodeID);
+    public native boolean isTopComponent(int  aNodeID) throws Exception;
 
     //# --- VIC maintenance : Templates ---
     // From a component tree a template tree can be constructed. In a template
@@ -67,94 +70,94 @@ public class jTreeMaintenance
     // of nodes on the same level.
     // Returns 0 on failure, otherwise the ID of the new tree is returned.
     // ABOUT TO BECOME OBSOLETE WHEN OTB IS READY
-    public native int buildTemplateTree (int topNodeID, short aClassif);
+    public native int buildTemplateTree (int topNodeID, short aClassif) throws Exception;
 
 
     // Create a new OTDBtree record for an Template tree in the database 
     // and return its treeID.
-    public native int newTemplateTree();
+    public native int newTemplateTree() throws Exception;
 
     // Make a copy of an existing template tree.
     // Returns 0 on failure, otherwise the ID of the new tree is returned.
-    public native int copyTemplateTree (int aTreeID);
+    public native int copyTemplateTree (int aTreeID) throws Exception;
 
     // Get a single node from the VIC template tree
-    public native jOTDBnode getNode (int aTreeID, int aNodeID);
+    public native jOTDBnode getNode (int aTreeID, int aNodeID) throws Exception;
 
     // Get the parameter definition of a node
-    public native jOTDBparam getParam(int aTreeID,int aParamID);
+    public native jOTDBparam getParam(int aTreeID,int aParamID) throws Exception;
 
     // Save the parameter definition
-    public native boolean saveParam(jOTDBparam aParam);
+    public native boolean saveParam(jOTDBparam aParam) throws Exception;
 
     // Get a number of levels of children.
-    public native Vector getItemList (int aTreeID, int topNode, int depth);
+    public native Vector getItemList (int aTreeID, int topNode, int depth) throws Exception;
 
     // Get a list of nodes based on a namefragment. Use '%' as wildchar.
-    public native Vector getItemList (int aTreeID, String aNameFragment);
+    public native Vector getItemList (int aTreeID, String aNameFragment) throws Exception;
 
     // Duplicates the given node (and its parameters and children)
     // in the template database. The duplicate gets the new index.
-    public native int dupNode (int aTreeID, int orgNodeID, short newIndex);
+    public native int dupNode (int aTreeID, int orgNodeID, short newIndex) throws Exception;
 
     // Adds the given VIC Component under the given parent of a
     // template tree.
-    public native int addComponent (int compID,int treeID,int parentID);
+    public native int addComponent (int compID,int treeID,int parentID) throws Exception;
  
     // Updates the (vector of) OTDBnodes to the database.
-    public native boolean saveNode (jOTDBnode aNode);
-    public native boolean saveNodeList (Vector aNodeList);
+    public native boolean saveNode (jOTDBnode aNode) throws Exception;
+    public native boolean saveNodeList (Vector aNodeList) throws Exception;
 
     // Updates the (vector of) OTDBnodes to the database.
-    public native boolean deleteNode (jOTDBnode	aNode);
-    public native boolean deleteNodeList (Vector aNodeList);
+    public native boolean deleteNode (jOTDBnode	aNode) throws Exception;
+    public native boolean deleteNodeList (Vector aNodeList) throws Exception;
 
     // Evaluate the constraints from a (sub)tree.
-    public native boolean checkTreeConstraints (int aTreeID, int topNode);
+    public native boolean checkTreeConstraints (int aTreeID, int topNode) throws Exception;
 
 
     //# --- VIC maintenance : Hierarchical trees ---
     // From a template tree a fully instanciated tree can be build.
     // Returns 0 on failure, otherwise the ID of the new tree is returned.
-    public native int instanciateTree (int baseTree);
+    public native int instanciateTree (int baseTree) throws Exception;
 
     // Prune an instanciated tree to get loss of depricated values.
-    public native boolean pruneTree (int aTreeID, short pruningLevel);
+    public native boolean pruneTree (int aTreeID, short pruningLevel) throws Exception;
 
     // Export a VIC (sub)tree to a file. The user may choose in which format
     // the tree is exported: HTML, KeyValue List.
     public native boolean exportTree (int aTreeID,int topItem,String filename,
-                                      int outputFormat,boolean folded);
+                                      int outputFormat,boolean folded) throws Exception;
 
 
     //# --- Finally some general tree maintenance ---
     // Delete a tree (of any kind) from the database.
-    public native boolean deleteTree (int aTreeID);
+    public native boolean deleteTree (int aTreeID) throws Exception;
 
     // Retrieve the topNode of any tree
-    public native jOTDBnode getTopNode (int aTreeID);
+    public native jOTDBnode getTopNode (int aTreeID) throws Exception;
 
     // save modified OTDBtree information
-    public native boolean setMomInfo(int aTreeID, int momID, String campaign);
+    public native boolean setMomInfo(int aTreeID, int momID, String campaign) throws Exception;
     
     // Set the classification of any tree.
-    public native boolean setClassification (int aTreeID, short aClassification);
+    public native boolean setClassification (int aTreeID, short aClassification) throws Exception;
 
     // Set the state of any tree. When changing the state of a tree all
     // constraints/validations for the current type must be fulfilled.
     // When errors occur these can be retrieved with the errorMsg function.
-    public native boolean setTreeState (int aTreeID, short aState);
+    public native boolean setTreeState (int aTreeID, short aState) throws Exception;
 
 
     // Update the description of a tree.
-    public native boolean setDescription(int  aTreeID,String aDescription);
+    public native boolean setDescription(int  aTreeID,String aDescription) throws Exception;
 
     // Set the scheduling times of the tree
-    public native boolean setSchedule(int aTreeID, String aStartTime,String aStopTime);
+    public native boolean setSchedule(int aTreeID, String aStartTime,String aStopTime) throws Exception;
 
     // Whenever an error occurs in one the OTDB functions the message can
     // be retrieved with this function.
-    public native String errorMsg();
+    public native String errorMsg() throws Exception;
 
 
 }
diff --git a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeStateConv.java b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeStateConv.java
index d93754e14942b54ac6edd7eb79f8ace8b66b9c34..39f42b73f57b6a0c20cf970c4c1fa012cb20a80b 100644
--- a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeStateConv.java
+++ b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeStateConv.java
@@ -27,18 +27,22 @@ public class jTreeStateConv {
 
     public jTreeStateConv ()
     {
-	initTreeStateConv();
+        try {
+            initTreeStateConv();
+        } catch (Exception ex) {
+            System.out.println("Error during TreeStateConv init :" + ex);
+        }
     }
 
-    private native void    initTreeStateConv();
-    public  native short   get(String jarg1);
-    public  native String  get(short jarg1);
+    private native void    initTreeStateConv() throws Exception;
+    public  native short   get(String jarg1) throws Exception;
+    public  native String  get(short jarg1) throws Exception;
 
     // java doesn't implement reference arguments, so the
     // initial call bool get(long type, string typename)
     // can't be made easily here/ Choice has been made to gather the complete
     // list in the c++ wrapper and return it completely here.
-    public  native HashMap<Short,String> getTypes();
-    public  native void    top();
-    public  native boolean next();
+    public  native HashMap<Short,String> getTypes() throws Exception;
+    public  native void    top() throws Exception;
+    public  native boolean next() throws Exception;
 } 
diff --git a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeTypeConv.java b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeTypeConv.java
index 516790569641d0e582f7c80dc84dfb9bd4c5ce57..f383730f3bef68931868b598c933ea2c8ae75e20 100644
--- a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeTypeConv.java
+++ b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeTypeConv.java
@@ -27,18 +27,22 @@ public class jTreeTypeConv {
 
     public jTreeTypeConv ()
     {
-	initTreeTypeConv();
+        try {
+            initTreeTypeConv();
+        } catch (Exception ex) {
+            System.out.println("Error during TreeTypeConv init :"+ex);
+        }
     }
 
-    private native void    initTreeTypeConv();
-    public  native short   get(String jarg1);
-    public  native String  get(short jarg1);
+    private native void    initTreeTypeConv() throws Exception;
+    public  native short   get(String jarg1) throws Exception;
+    public  native String  get(short jarg1) throws Exception;
 
     // java doesn't implement reference arguments, so the
     // initial call bool get(long type, string typename)
     // can't be made easily here/ Choice has been made to gather the complete
     // list in the c++ wrapper and return it completely here.
-    public  native HashMap<Short,String> getTypes();
-    public  native void    top();
-    public  native boolean next();
+    public  native HashMap<Short,String> getTypes() throws Exception;
+    public  native void    top() throws Exception;
+    public  native boolean next() throws Exception;
 } 
diff --git a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeValue.java b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeValue.java
index f744289e125989aa42c7030e08911a1551187128..d63c08c7e1aed401c3e11d71152a08c6dbafa2ae 100644
--- a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeValue.java
+++ b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jTreeValue.java
@@ -43,13 +43,13 @@ public class jTreeValue
     // PVSS will continuously add value-changes to the offline PIC.
     // There two ways PVSS can do this.
     // The function returns false if the PIC node can not be found.
-    public native boolean addKVT( String key, String value, String time);
-    public native boolean addKVT(jOTDBvalue aKVT);
+    public native boolean addKVT( String key, String value, String time) throws Exception;
+    public native boolean addKVT(jOTDBvalue aKVT) throws Exception;
 
     // Note: This form will probably be used by SAS and OTB when committing
     // a list of modified node.
-    public native boolean addKVTlist(Vector<jOTDBvalue> aValueList);
-    //    public native boolean addKVTparamSet(jParamterSet aPS);
+    public native boolean addKVTlist(Vector<jOTDBvalue> aValueList) throws Exception;
+    //    public native boolean addKVTparamSet(jParamterSet aPS) throws Exception;
 
     //# SHM queries
     // With searchInPeriod a list of all valuechanges in the OTDB tree can
@@ -63,14 +63,14 @@ public class jTreeValue
 						     int depth, 
 						     String beginDate, 
 						     String endDate, 
-						     boolean mostRecentlyOnly);
+						     boolean mostRecentlyOnly) throws Exception;
 
     //# SAS queries
     // For scheduling the VIC tree on the OTDB tree SAS must know what
     // resources exist in the OTDB tree. This list can be retrieved with
     // this function.
     // TBW: Is this realy what SAS needs???
-    public native Vector<jOTDBvalue> getSchedulableItems (int topNode);
+    public native Vector<jOTDBvalue> getSchedulableItems (int topNode) throws Exception;
 
     // Whenever an error occurs in one the OTDB functions the message can
     // be retrieved with this function.
diff --git a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jUnitConv.java b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jUnitConv.java
index dfedf4b6b145ffb4363b2f7db163a5b5be4e8c8d..d4612fb04218f38b59536daf51e6417b71e8bdca 100644
--- a/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jUnitConv.java
+++ b/SAS/OTB/jOTDB2/src/nl/astron/lofar/sas/otb/jotdb2/jUnitConv.java
@@ -27,18 +27,22 @@ public class jUnitConv {
 
     public jUnitConv ()
     {
-	initUnitConv();
+        try {
+            initUnitConv();
+        } catch (Exception ex) {
+            System.out.println("Error during UnitConv init :"+ex);
+        }
     }
 
-    private native void    initUnitConv();
-    public  native short   get(String jarg1);
-    public  native String  get(short jarg1);
+    private native void    initUnitConv() throws Exception;
+    public  native short   get(String jarg1) throws Exception;
+    public  native String  get(short jarg1) throws Exception;
 
     // java doesn't implement reference arguments, so the
     // initial call bool get(long type, string typename)
     // can't be made easily here/ Choice has been made to gather the complete
     // list in the c++ wrapper and return it completely here.
-    public  native HashMap<Short,String> getTypes();
-    public  native void    top();
-    public  native boolean next();
+    public  native HashMap<Short,String> getTypes() throws Exception;
+    public  native void    top() throws Exception;
+    public  native boolean next() throws Exception;
 } 
diff --git a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jClassifConv.cc b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jClassifConv.cc
index 31663a08206527c108fe3d20c8833ccb3dd29b5a..2d6668ab8d45d651da085e5be384979e4b15a788 100644
--- a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jClassifConv.cc
+++ b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jClassifConv.cc
@@ -45,9 +45,15 @@ extern OTDBconnection* theirConn;
  * Method:    initClassifConv
  * Signature: ()V
  */
-JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_initClassifConv(JNIEnv *, jobject) {
+JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_initClassifConv(JNIEnv *env, jobject) {
   
-  classifConv = new ClassifConv(theirConn);
+  try {
+    classifConv = new ClassifConv(theirConn);
+  } catch (exception &ex) {
+    cout << "Exception during new ClassifConv " << ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 }
 
 /*
@@ -59,11 +65,17 @@ JNIEXPORT jshort JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_get__L
   
   const char* chars = env->GetStringUTFChars (aConv, 0);
   const string str (chars);
-  
-  short ret = classifConv->get (str);
-  
-  env->ReleaseStringUTFChars (aConv, chars);	     
-  
+  short ret;
+  try {
+    ret = classifConv->get (str);
+    env->ReleaseStringUTFChars (aConv, chars);	     
+  } catch (exception &ex) {
+    cout << "Exception during ClassifConv::get("<< str << ") " << ex.what() << endl;
+    
+    env->ReleaseStringUTFChars (aConv, chars);	     
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+ 
   return ret;
 }
 
@@ -73,7 +85,15 @@ JNIEXPORT jshort JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_get__L
  * Signature: (S)Ljava/lang/String;
  */
 JNIEXPORT jstring JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_get__S(JNIEnv *env, jobject, jshort aConv) {
-  jstring jstr = env->NewStringUTF (classifConv->get(aConv).c_str());
+
+  jstring jstr;
+  try {
+    jstr = env->NewStringUTF (classifConv->get(aConv).c_str());
+  } catch (exception &ex) {
+    cout << "Exception during ClassifConv::get("<< aConv << ") " << ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   return jstr;
 }
 
@@ -82,8 +102,7 @@ JNIEXPORT jstring JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_get__
  * Method:    getTypes
  * Signature: ()Ljava/util/HashMap;
  */
-JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_getT\
-ypes(JNIEnv *env, jobject) {
+JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_getTypes(JNIEnv *env, jobject) {
 
   
   // Construct java Map
@@ -108,22 +127,27 @@ ypes(JNIEnv *env, jobject) {
   if ( env->ExceptionOccurred() )
     return 0;
  
-  classifConv->top();
-  do {
-    classifType key;
-    string value;
-
-    if (classifConv->get(key, value)) {
-      env->CallObjectMethod(result, put, env->NewObject(shortClass,
-							shortInit,
-							(jshort)key), 
-							env->NewStringUTF(value.c_str()));
-
-      if ( env->ExceptionOccurred() )
-	return 0;
-   }
-  } while (classifConv->next());
-
+  try {
+    classifConv->top();
+    do {
+      classifType key;
+      string value;
+
+      if (classifConv->get(key, value)) {
+        env->CallObjectMethod(result, put, env->NewObject(shortClass,
+	  						  shortInit,
+							  (jshort)key), 
+							  env->NewStringUTF(value.c_str()));
+
+        if ( env->ExceptionOccurred() )
+  	  return 0;
+      }
+    } while (classifConv->next());
+  } catch (exception &ex) {
+    cout << "Exception during ClassifConv::getTypes " << ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   return result;
 
 }
@@ -133,8 +157,14 @@ ypes(JNIEnv *env, jobject) {
  * Method:    top
  * Signature: ()V
  */
-JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_top(JNIEnv *, jobject) {
-  classifConv->top();
+JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_top(JNIEnv *env, jobject) {
+  try {
+    classifConv->top();
+  } catch (exception &ex) {
+    cout << "Exception during ClassifConv::top" << ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 }
 
 
@@ -143,7 +173,14 @@ JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_top(JNIE
  * Method:    next
  * Signature: ()Z
  */
-JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_next(JNIEnv *, jobject) {
-  jboolean aBool=classifConv->next();
+JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jClassifConv_next(JNIEnv *env, jobject) {
+  jboolean aBool;
+  try {
+    aBool=classifConv->next();
+  } catch (exception &ex) {
+    cout << "Exception during ClassifConv::next" << ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   return aBool;
 }
diff --git a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection.cc b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection.cc
index 2bc5840e1dd632f0c676921fe4ecbb4ad19db988..7c7a15f4c69150aa97b7ebf80d9e1e240ba64f31 100644
--- a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection.cc
+++ b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection.cc
@@ -48,29 +48,56 @@ JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection_initO
   const string p (pass);
   const string d (db);
 
-  theirConn = new OTDBconnection(u, p, d);
-
-  env->ReleaseStringUTFChars(username, user);
-  env->ReleaseStringUTFChars(passwd, pass);
-  env->ReleaseStringUTFChars(database, db);
+  try {
+    theirConn = new OTDBconnection(u, p, d);
+    env->ReleaseStringUTFChars(username, user);
+    env->ReleaseStringUTFChars(passwd, pass);
+    env->ReleaseStringUTFChars(database, db);
+  } catch (exception &ex) {
+    cout << "Exception during new OTDBconnection(" << u << "," << p << "," << d <<") : "<< ex.what() << endl;
+    
+    env->ReleaseStringUTFChars(username, user);
+    env->ReleaseStringUTFChars(passwd, pass);
+    env->ReleaseStringUTFChars(database, db);
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 }
 
-JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection_isConnected(JNIEnv *, jobject) {
+JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection_isConnected(JNIEnv *env, jobject) {
   jboolean connected;
-  connected = theirConn->isConnected();
+  try {
+    connected = theirConn->isConnected();
+  } catch (exception &ex) {
+    cout << "Exception during OTDBconnection::connected "<< ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   return connected;
 }
 
 
-JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection_connect(JNIEnv *, jobject) {
+JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection_connect(JNIEnv *env, jobject) {
   jboolean connected;
-  connected = (jboolean)theirConn->connect();
+  try {
+    connected = (jboolean)theirConn->connect();
+  } catch (exception &ex) {
+    cout << "Exception during OTDBconnection::connect "<< ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   return connected;
 }
 
 
 JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection_getTreeInfo(JNIEnv *env, jobject, jint treeID, jboolean isMomID) {
-  OTDBtree aTree = theirConn->getTreeInfo((int)treeID, isMomID);
+  OTDBtree aTree;
+  try {
+    aTree = theirConn->getTreeInfo((int)treeID, isMomID);
+  } catch (exception &ex) {
+    cout << "Exception during OTDBconnection::getTreeInfo(" << treeID << "," << isMomID << ") " << ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 
   return convertOTDBtree(env, aTree);
 }
@@ -80,56 +107,86 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection_ge
   const char* bd = env->GetStringUTFChars (beginDate, 0);
   const char* ed = env->GetStringUTFChars (endDate, 0);
 
-  vector<TreeState> states = theirConn->getStateList(treeID, isMomID,time_from_string(bd), time_from_string(ed));
-
-  vector<TreeState>::iterator statesIterator;
-
-  // Construct java Vector
   jobject statesVector;
-  jclass class_Vector = env->FindClass("java/util/Vector");
-  jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
-  statesVector = env->NewObject(class_Vector, mid_Vector_cons);
-  jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
+  try {
+    vector<TreeState> states = theirConn->getStateList(treeID, isMomID,time_from_string(bd), time_from_string(ed));
+    vector<TreeState>::iterator statesIterator;
+
+    // Construct java Vector
+    jclass class_Vector = env->FindClass("java/util/Vector");
+    jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
+    statesVector = env->NewObject(class_Vector, mid_Vector_cons);
+    jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
 
-  for (statesIterator = states.begin(); statesIterator != states.end(); statesIterator++)
-    {
+    for (statesIterator = states.begin(); statesIterator != states.end(); statesIterator++) {
       env->CallObjectMethod(statesVector, mid_Vector_add,convertTreeState(env, *statesIterator ));
     }
 
+    env->ReleaseStringUTFChars(beginDate, bd);
+    env->ReleaseStringUTFChars(endDate, ed);  
+  } catch (exception &ex) {
+    cout << "Exception during OTDBconnection::getStateList(" << treeID << "," << isMomID << "," <<
+    time_from_string(bd) << "," << time_from_string(ed) << ") "<< ex.what() << endl;
+    
+    env->ReleaseStringUTFChars(beginDate, bd);
+    env->ReleaseStringUTFChars(endDate, ed);
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   return(statesVector);
 }
 
 
 JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection_getTreeList(JNIEnv *env, jobject, jshort treeType, jshort classifType) {
-  vector<OTDBtree> trees = theirConn->getTreeList(treeType, classifType);
-  vector<OTDBtree>::iterator treeIterator;
-
-  // Construct java Vector
+  
   jobject itemVector;
-  jclass class_Vector = env->FindClass("java/util/Vector");
-  jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
+  try {
+    vector<OTDBtree> trees = theirConn->getTreeList(treeType, classifType);
+    vector<OTDBtree>::iterator treeIterator;
+
+    // Construct java Vector
+    jclass class_Vector = env->FindClass("java/util/Vector");
+    jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
 
-  itemVector = env->NewObject(class_Vector, mid_Vector_cons);
-  jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
+    itemVector = env->NewObject(class_Vector, mid_Vector_cons);
+    jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
 
 
-  for (treeIterator = trees.begin(); treeIterator != trees.end(); treeIterator++)
-    {
+    for (treeIterator = trees.begin(); treeIterator != trees.end(); treeIterator++) {
       env->CallObjectMethod(itemVector, mid_Vector_add, convertOTDBtree(env, *treeIterator));
     }
+  } catch (exception &ex) {
+    cout << "Exception during OTDBconnection::getTreeList(" << treeType << "," << classifType << ") " << ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+
+  }
 
   return(itemVector);
 }
 
 
 JNIEXPORT jstring JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection_errorMsg(JNIEnv *env, jobject) {
-  jstring jstr = env->NewStringUTF(theirConn->errorMsg().c_str());
+  jstring jstr;
+  try {
+    jstr = env->NewStringUTF(theirConn->errorMsg().c_str());
+  } catch (exception &ex) {
+    cout << "Exception during OTDBconnection::errorMsg " << ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   return jstr;
 }
 
 
-JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection_getAuthToken(JNIEnv *, jobject) {
-  jint token = (jint)theirConn->getAuthToken();
+JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection_getAuthToken(JNIEnv *env, jobject) {
+  jint token;
+  try {
+    token = (jint)theirConn->getAuthToken();
+  } catch (exception &ex) {
+    cout << "Exception during OTDBconnection::getAuthToken " << ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   return token;
 }
 
diff --git a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv.cc b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv.cc
index a3870e70e1ccc61228bd53ca75561144c19077f5..0743ff87fcd4e17b927b2c85c512735b7d438d4c 100644
--- a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv.cc
+++ b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv.cc
@@ -44,9 +44,15 @@ extern OTDBconnection* theirConn;
  * Method:    initParamTypeConv
  * Signature: ()V
  */
-JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv_initParamTypeConv(JNIEnv *, jobject) {
+JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv_initParamTypeConv(JNIEnv *env , jobject) {
   
-  paramTypeConv = new ParamTypeConv(theirConn);
+  try {
+    paramTypeConv = new ParamTypeConv(theirConn);
+  } catch (exception &ex) {
+    cout << "Exception during new ParamTypeConv) : "<< ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 }
 
 /*
@@ -58,10 +64,18 @@ JNIEXPORT jshort JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv_get_
   
   const char* chars = env->GetStringUTFChars (aConv, 0);
   const string str (chars);
+  short ret;
+
+  try {  
+    ret = paramTypeConv->get (str);
   
-  short ret = paramTypeConv->get (str);
-  
-  env->ReleaseStringUTFChars (aConv, chars);	     
+    env->ReleaseStringUTFChars (aConv, chars);	     
+  } catch (exception &ex) {
+    cout << "Exception during ParamTypeConv::get(" << str << ") "<< ex.what() << endl;
+    
+    env->ReleaseStringUTFChars(aConv,chars);
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   
   return ret;
 }
@@ -72,7 +86,16 @@ JNIEXPORT jshort JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv_get_
  * Signature: (S)Ljava/lang/String;
  */
 JNIEXPORT jstring JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv_get__S(JNIEnv *env, jobject, jshort aConv) {
-  jstring jstr = env->NewStringUTF (paramTypeConv->get(aConv).c_str());
+
+  jstring jstr;
+  try {
+    jstr = env->NewStringUTF (paramTypeConv->get(aConv).c_str());
+  } catch (exception &ex) {
+    cout << "Exception during ParamTypeConv::get(" << aConv << ") "<< ex.what() << endl;
+    
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return jstr;
 }
 
@@ -106,21 +129,27 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv_get
   if ( env->ExceptionOccurred() )
     return 0;
  
-  paramTypeConv->top();
-  do {
-    paramType key;
-    string value;
-
-    if (paramTypeConv->get(key, value)) {
-      env->CallObjectMethod(result, put, env->NewObject(shortClass,
-							shortInit,
-							(jshort)key), 
-							env->NewStringUTF(value.c_str()));
-
-      if ( env->ExceptionOccurred() )
-	return 0;
-   }
-  } while (paramTypeConv->next());
+  try {
+    paramTypeConv->top();
+    do {
+      paramType key;
+      string value;
+
+      if (paramTypeConv->get(key, value)) {
+        env->CallObjectMethod(result, put, env->NewObject(shortClass,
+							  shortInit,
+							  (jshort)key), 
+							  env->NewStringUTF(value.c_str()));
+
+        if ( env->ExceptionOccurred() )
+	  return 0;
+      }
+    } while (paramTypeConv->next());
+  } catch (exception &ex) {
+    cout << "Exception during ParamTypeConv::getTypes "<< ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 
   return result;
 
@@ -131,8 +160,15 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv_get
  * Method:    top
  * Signature: ()V
  */
-JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv_top(JNIEnv *, jobject) {
-  paramTypeConv->top();
+JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv_top(JNIEnv *env, jobject) {
+  try {
+    paramTypeConv->top();
+  } catch (exception &ex) {
+    cout << "Exception during ParamTypeConv::top "<< ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+  
 }
 
 
@@ -141,7 +177,15 @@ JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv_top(JN
  * Method:    next
  * Signature: ()Z
  */
-JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv_next(JNIEnv *, jobject) {
-  jboolean aBool=paramTypeConv->next();
+JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jParamTypeConv_next(JNIEnv *env, jobject) {
+  jboolean aBool;
+  try {
+    aBool=paramTypeConv->next();
+  } catch (exception &ex) {
+    cout << "Exception during ParamTypeConv::next "<< ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return aBool;
 }
diff --git a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance.cc b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance.cc
index d3acb57e9ddc4cde729388e0ccd3c7e439f0b54d..592b0d1597f8131159b57e4272d78b8ddbed07b8 100644
--- a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance.cc
+++ b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance.cc
@@ -37,8 +37,6 @@
 
 using namespace LOFAR::OTDB;
 using namespace std;
-//using std::string;
-//using std::vector;
 
 extern OTDBconnection*  theirConn;
 TreeMaintenance* theirTM;
@@ -49,8 +47,15 @@ TreeMaintenance* theirTM;
  * Method:    initTreeMaintenance
  * Signature: ()V
  */
-JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_initTreeMaintenance  (JNIEnv *, jobject) {
-  theirTM = new TreeMaintenance (theirConn);
+JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_initTreeMaintenance  (JNIEnv *env, jobject) {
+
+  try {
+    theirTM = new TreeMaintenance (theirConn);
+  } catch (exception &ex) {
+    cout << "Exception during new TreeMaintenance "<< ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 }
 
 /*
@@ -59,10 +64,22 @@ JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_init
  * Signature: (Ljava/lang/String;)I
  */
 JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_loadMasterFile(JNIEnv *env, jobject, jstring aName) {
-  jboolean isCopy;
-  const char* name = env->GetStringUTFChars (aName, &isCopy);
-  jint retVal = theirTM->loadMasterFile(name);
-  env->ReleaseStringUTFChars (aName, name);
+
+  jint retVal;
+  const char* name;
+  try {
+
+    jboolean isCopy;  
+    name = env->GetStringUTFChars (aName, &isCopy);
+    retVal = theirTM->loadMasterFile(name);
+    env->ReleaseStringUTFChars (aName, name);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::loadMasterFile(" << name << ") " << ex.what() << endl; 
+    env->ReleaseStringUTFChars (aName, name);
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+  
 
   return retVal;
 }
@@ -73,11 +90,20 @@ JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_load
  * Signature: (Ljava/lang/String;)I
  */
 JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_loadComponentFile(JNIEnv *env, jobject, jstring aName) {
-  jboolean isCopy;
-  const char* name = env->GetStringUTFChars (aName, &isCopy);
-  jint retVal = theirTM->loadComponentFile(name);
-  env->ReleaseStringUTFChars (aName, name);
 
+  jint retVal;
+  const char* name;
+  try {
+    jboolean isCopy;
+    name = env->GetStringUTFChars (aName, &isCopy);
+    retVal = theirTM->loadComponentFile(name);
+    env->ReleaseStringUTFChars (aName, name);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::loadComponentFile(" << name << ") " << ex.what() << endl; 
+    env->ReleaseStringUTFChars (aName, name);
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   return retVal;
 }
 
@@ -88,23 +114,31 @@ JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_load
  */
 JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_getComponentList(JNIEnv *env, jobject, jstring aName , jboolean topOnly) {
 
-  jboolean isCopy;
-  const char* name = env->GetStringUTFChars (aName, &isCopy);
-  vector<VICnodeDef> itemList = theirTM->getComponentList(name, topOnly);
-  env->ReleaseStringUTFChars (aName, name);
+  jobject itemVector;
+  const char* name;
+  try {
+    jboolean isCopy;
+    name = env->GetStringUTFChars (aName, &isCopy);
+    vector<VICnodeDef> itemList = theirTM->getComponentList(name, topOnly);
+    env->ReleaseStringUTFChars (aName, name);
 
-  vector<VICnodeDef>::iterator itemIterator;
+    vector<VICnodeDef>::iterator itemIterator;
 
-  // Construct java Vector
-  jobject itemVector;
-  jclass class_Vector = env->FindClass("java/util/Vector");
-  jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
-  itemVector = env->NewObject(class_Vector, mid_Vector_cons);
-  jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
+    // Construct java Vector
+    jclass class_Vector = env->FindClass("java/util/Vector");
+    jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
+    itemVector = env->NewObject(class_Vector, mid_Vector_cons);
+    jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
 
-  for (itemIterator = itemList.begin(); itemIterator != itemList.end(); itemIterator++)
-    env->CallObjectMethod(itemVector, mid_Vector_add, convertVICnodeDef (env, *itemIterator));
-  
+    for (itemIterator = itemList.begin(); itemIterator != itemList.end(); itemIterator++)
+      env->CallObjectMethod(itemVector, mid_Vector_add, convertVICnodeDef (env, *itemIterator));
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::getComponentList(" << name << "," << topOnly << ") " << ex.what() << endl; 
+    env->ReleaseStringUTFChars (aName, name);
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+   
   return itemVector;
 }
 
@@ -115,7 +149,16 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_g
  * Signature: (I)Lnl/astron/lofar/sas/otb/jotdb2/jVICnodeDef;
  */
 JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_getComponentNode(JNIEnv *env, jobject, jint aNodeID) {
-  VICnodeDef aNodeDef = theirTM->getComponentNode (aNodeID);
+
+  VICnodeDef aNodeDef;
+  try {
+    aNodeDef = theirTM->getComponentNode (aNodeID);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::getComponentNode(" << aNodeID << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return convertVICnodeDef (env, aNodeDef);
 }
 
@@ -126,19 +169,25 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_g
  */
 JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_getComponentParams(JNIEnv *env, jobject, jint aNodeID) {
   
-  vector<OTDBparam> itemList = theirTM->getComponentParams(aNodeID);
-  vector<OTDBparam>::iterator itemIterator;
-
-  // Construct java Vector
   jobject itemVector;
-  jclass class_Vector = env->FindClass("java/util/Vector");
-  jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
-  itemVector = env->NewObject(class_Vector, mid_Vector_cons);
-  jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
+  try {
+    vector<OTDBparam> itemList = theirTM->getComponentParams(aNodeID);
+    vector<OTDBparam>::iterator itemIterator;
+
+    // Construct java Vector
+    jclass class_Vector = env->FindClass("java/util/Vector");
+    jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
+    itemVector = env->NewObject(class_Vector, mid_Vector_cons);
+    jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
+
+    for (itemIterator = itemList.begin(); itemIterator != itemList.end(); itemIterator++)
+      env->CallObjectMethod(itemVector, mid_Vector_add, convertOTDBparam(env, *itemIterator));
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::getComponentParams(" << aNodeID << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 
-  for (itemIterator = itemList.begin(); itemIterator != itemList.end(); itemIterator++)
-    env->CallObjectMethod(itemVector, mid_Vector_add, convertOTDBparam(env, *itemIterator));
-  
   return itemVector;
 }
 
@@ -149,8 +198,17 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_g
  */
 JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_saveComponentNode(JNIEnv *env, jobject, jobject jVICnodeDef) {
 
-  VICnodeDef aVICnodeDef = convertjVICnodeDef (env, jVICnodeDef);
-  jboolean succes = theirTM->saveComponentNode(aVICnodeDef);
+  jboolean succes;
+  
+  try {
+    VICnodeDef aVICnodeDef = convertjVICnodeDef (env, jVICnodeDef);
+    succes = theirTM->saveComponentNode(aVICnodeDef);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::saveComponentNode" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+  
   return succes;
 }
 
@@ -159,9 +217,18 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
  * Method:    isTopComponent
  * Signature: (I)Z
  */
-JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_isTopComponent(JNIEnv *, jobject, jint aNodeID){
-  jboolean success = theirTM->isTopComponent(aNodeID);
-  return success;
+JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_isTopComponent(JNIEnv *env, jobject, jint aNodeID){
+  
+  jboolean succes;
+  try {
+    succes = theirTM->isTopComponent(aNodeID);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::isTopComponent(" << aNodeID << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
+  return succes;
 }
 
 
@@ -170,8 +237,17 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
  * Method:    buildTemplateTree
  * Signature: (IS)I
  */
-JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_buildTemplateTree(JNIEnv *, jobject, jint topNodeID, jshort aClassif) {
-  jint treeID = theirTM->buildTemplateTree (topNodeID, aClassif);
+JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_buildTemplateTree(JNIEnv *env, jobject, jint topNodeID, jshort aClassif) {
+
+  jint treeID;
+  try {
+    treeID = theirTM->buildTemplateTree (topNodeID, aClassif);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::buildTemplateTree(" << topNodeID << "," << aClassif << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return treeID;
 }
 
@@ -180,8 +256,17 @@ JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_buil
  * Method:    newTemplateTree
  * Signature: ()I
  */
-JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_newTemplateTree(JNIEnv *, jobject) {
-  jint treeID = theirTM->newTemplateTree();
+JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_newTemplateTree(JNIEnv *env, jobject) {
+
+  jint treeID;
+  try {
+    treeID = theirTM->newTemplateTree();
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::newTemplateTree" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return treeID;
   
 }
@@ -191,8 +276,17 @@ JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_newT
  * Method:    copyTemplateTree
  * Signature: (I)I
  */
-JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_copyTemplateTree(JNIEnv *, jobject, jint aTreeID) {
-  jint treeID = theirTM->copyTemplateTree (aTreeID);
+JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_copyTemplateTree(JNIEnv *env, jobject, jint aTreeID) {
+
+  jint treeID;
+  try {
+    treeID = theirTM->copyTemplateTree (aTreeID);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::copyTemplateTree(" << aTreeID << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return treeID;
 }
 
@@ -202,7 +296,16 @@ JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_copy
  * Signature: (II)Lnl/astron/lofar/sas/otb/jotdb2/jOTDBnode;
  */
 JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_getNode(JNIEnv *env, jobject, jint aTreeID, jint aNodeID) {
-  OTDBnode aNode = theirTM->getNode (aTreeID, aNodeID);
+  
+  OTDBnode aNode;
+  try {
+    aNode = theirTM->getNode (aTreeID, aNodeID);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::getNode(" << aTreeID << "," << aNodeID << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return convertOTDBnode (env, aNode);
 }
 
@@ -212,7 +315,16 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_g
  * Signature: (II)Lnl/astron/lofar/sas/otb/jotdb2/jOTDBparam;
  */
 JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_getParam(JNIEnv *env, jobject, jint treeID, jint paramID ) {
-  OTDBparam aNode = theirTM->getParam (treeID, paramID);
+
+  OTDBparam aNode;
+  try {
+    aNode = theirTM->getParam (treeID, paramID);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::getParam(" << treeID << "," << paramID << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return convertOTDBparam (env, aNode);
 }
 
@@ -222,8 +334,17 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_g
  * Signature: (Lnl/astron/lofar/sas/otb/jotdb2/jOTDBparam;)Z
  */
 JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_saveParam(JNIEnv *env, jobject, jobject jParam) {
-  OTDBparam aParam = convertjOTDBparam(env,jParam);
-  jboolean succes = theirTM->saveParam (aParam);
+ 
+  jboolean succes;
+  try {
+    OTDBparam aParam = convertjOTDBparam(env,jParam);
+    succes = theirTM->saveParam (aParam);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::saveParam " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return succes;
 }
 
@@ -233,18 +354,26 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
  * Signature: (III)Ljava/util/Vector;
  */
 JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_getItemList__III(JNIEnv *env, jobject, jint aTreeID, jint topNode, jint depth) {
-  vector<OTDBnode> itemList = theirTM->getItemList (aTreeID, topNode, depth);
-  vector<OTDBnode>::iterator itemIterator;
-  
-  // Construct java Vector
+
   jobject itemVector;
-  jclass class_Vector = env->FindClass("java/util/Vector");
-  jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
-  itemVector = env->NewObject(class_Vector, mid_Vector_cons);
-  jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
+  try {
+    vector<OTDBnode> itemList = theirTM->getItemList (aTreeID, topNode, depth);
+    vector<OTDBnode>::iterator itemIterator;
+  
+    // Construct java Vector
+    jclass class_Vector = env->FindClass("java/util/Vector");
+    jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
+    itemVector = env->NewObject(class_Vector, mid_Vector_cons);
+    jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
   
-  for (itemIterator = itemList.begin(); itemIterator != itemList.end(); itemIterator++)
-    env->CallObjectMethod(itemVector, mid_Vector_add, convertOTDBnode (env, *itemIterator));
+    for (itemIterator = itemList.begin(); itemIterator != itemList.end(); itemIterator++)
+      env->CallObjectMethod(itemVector, mid_Vector_add, convertOTDBnode (env, *itemIterator));
+
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::getItemList(" << aTreeID << "," << topNode << "," << depth << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   
   return itemVector;
 }
@@ -255,24 +384,34 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_g
  * Signature: (ILjava/lang/String;)Ljava/util/Vector;
  */
 JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_getItemList__ILjava_lang_String_2(JNIEnv *env, jobject, jint aTreeID, jstring aNameFragment) {
+
+  jobject itemVector;
+
   const char* nf = env->GetStringUTFChars (aNameFragment, 0);
   const string nameFragment (nf);
   
-  vector<OTDBnode> itemList = theirTM->getItemList (aTreeID, nameFragment);
-  vector<OTDBnode>::iterator itemIterator;
+  try {
+    vector<OTDBnode> itemList = theirTM->getItemList (aTreeID, nameFragment);
+    vector<OTDBnode>::iterator itemIterator;
   
-  // Construct java Vector
-  jobject itemVector;
-  jclass class_Vector = env->FindClass("java/util/Vector");
-  jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
-  itemVector = env->NewObject(class_Vector, mid_Vector_cons);
-  jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
+    // Construct java Vector
+    jclass class_Vector = env->FindClass("java/util/Vector");
+    jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
+    itemVector = env->NewObject(class_Vector, mid_Vector_cons);
+    jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
   
-  for (itemIterator = itemList.begin(); itemIterator != itemList.end(); itemIterator++)
-    env->CallObjectMethod(itemVector, mid_Vector_add, convertOTDBnode (env, *itemIterator));
+    for (itemIterator = itemList.begin(); itemIterator != itemList.end(); itemIterator++)
+      env->CallObjectMethod(itemVector, mid_Vector_add, convertOTDBnode (env, *itemIterator));
   
-  env->ReleaseStringUTFChars (aNameFragment, nf);
+    env->ReleaseStringUTFChars (aNameFragment, nf);
   
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::getItemList(" << aTreeID << "," << nameFragment << ") " << ex.what() << endl; 
+
+    env->ReleaseStringUTFChars (aNameFragment, nf);
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return itemVector;
 }
 
@@ -281,8 +420,18 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_g
  * Method:    dupNode
  * Signature: (IIS)I
  */
-JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_dupNode(JNIEnv *, jobject, jint aTreeID, jint orgNodeID, jshort newIndex) {
-  return theirTM->dupNode (aTreeID, orgNodeID, newIndex);
+JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_dupNode(JNIEnv *env, jobject, jint aTreeID, jint orgNodeID, jshort newIndex) {
+  
+  jint anID;
+  try {
+    anID = theirTM->dupNode (aTreeID, orgNodeID, newIndex);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::dupNode(" << aTreeID << "," << orgNodeID << "," << newIndex << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
+  return anID;
 }
 
 /*
@@ -290,8 +439,18 @@ JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_dupN
  * Method:    addComponent
  * Signature: (III)I
  */
-JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_addComponent(JNIEnv *, jobject, jint compID, jint treeID, jint nodeID) {
-  return theirTM->addComponent(compID,treeID,nodeID);
+JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_addComponent(JNIEnv *env, jobject, jint compID, jint treeID, jint nodeID) {
+
+  jint anID;
+  try {
+    anID=theirTM->addComponent(compID,treeID,nodeID);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::addComponent(" << compID << "," << treeID << "," << nodeID << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+  
+  return anID;
 }
 
 /*
@@ -300,8 +459,17 @@ JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_addC
  * Signature: (Lnl/astron/lofar/sas/otb/jotdb2/jOTDBnode;)Z
  */
 JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_saveNode(JNIEnv *env, jobject, jobject jNode) {
-  OTDBnode aNode = convertjOTDBnode (env, jNode);
-  return theirTM->saveNode (aNode);
+
+  jboolean aB;
+  try {
+    OTDBnode aNode = convertjOTDBnode (env, jNode);
+    aB=theirTM->saveNode (aNode);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::saveNode" << ex.what() << endl; 
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
+  return aB;
 }
 
 /*
@@ -310,21 +478,26 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
  * Signature: (Ljava/util/Vector;)Z
  */
 JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_saveNodeList(JNIEnv *env, jobject, jobject aNodeList) {
+
   jboolean succes;
-  OTDBnode aNode;
-  // Construct java Vector
-  jclass class_Vector = env->FindClass("java/util/Vector");
-  jmethodID mid_Vector_elementAt = env->GetMethodID(class_Vector, "elementAt", "(I)Ljava/lang/Object;");
-  jmethodID mid_Vector_size = env->GetMethodID(class_Vector, "size", "()I");	  
+
+  try {
+    OTDBnode aNode;
+    // Construct java Vector
+    jclass class_Vector = env->FindClass("java/util/Vector");
+    jmethodID mid_Vector_elementAt = env->GetMethodID(class_Vector, "elementAt", "(I)Ljava/lang/Object;");
+    jmethodID mid_Vector_size = env->GetMethodID(class_Vector, "size", "()I");	  
   
-  for (int i = 0; i < env->CallIntMethod (aNodeList, mid_Vector_size); i++)
-    {	       
+    for (int i = 0; i < env->CallIntMethod (aNodeList, mid_Vector_size); i++) {	       
       aNode = convertjOTDBnode (env, env->CallObjectMethod (aNodeList, mid_Vector_elementAt, i));
       succes = theirTM->saveNode (aNode);
       if (!succes)
 	return succes;
     }
-  
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::saveNodeList" << ex.what() << endl; 
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   return succes;
 }
 
@@ -334,14 +507,23 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
  * Signature: (Lnl/astron/lofar/sas/otb/jotdb2/jOTDBnode;)Z
  */
 JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_deleteNode(JNIEnv *env, jobject, jobject jNode) {
-  jclass class_jOTDBnode = env->FindClass ("nl/astron/lofar/sas/otb/jotdb2/jOTDBnode");
-  jfieldID fid_jOTDBnode_itsTreeID = env->GetFieldID (class_jOTDBnode, "itsTreeID", "I");
-  jfieldID fid_jOTDBnode_itsNodeID = env->GetFieldID (class_jOTDBnode, "itsNodeID", "I");
+
+  jboolean aB ;
+  try {
+    jclass class_jOTDBnode = env->FindClass ("nl/astron/lofar/sas/otb/jotdb2/jOTDBnode");
+    jfieldID fid_jOTDBnode_itsTreeID = env->GetFieldID (class_jOTDBnode, "itsTreeID", "I");
+    jfieldID fid_jOTDBnode_itsNodeID = env->GetFieldID (class_jOTDBnode, "itsNodeID", "I");
   
-  // Get original OTDB node
-  OTDBnode aNode = theirTM->getNode (env->GetIntField (jNode, fid_jOTDBnode_itsTreeID), env->GetIntField (jNode, fid_jOTDBnode_itsNodeID));
+    // Get original OTDB node
+    OTDBnode aNode = theirTM->getNode (env->GetIntField (jNode, fid_jOTDBnode_itsTreeID), env->GetIntField (jNode, fid_jOTDBnode_itsNodeID));
+    aB=theirTM->deleteNode(aNode);
   
-  return theirTM->deleteNode (aNode);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::deleteNode" << ex.what() << endl; 
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
+  return aB;
 }
 
 /*
@@ -351,26 +533,31 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
  */
 JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_deleteNodeList(JNIEnv *env, jobject, jobject jNodeList) {
   jboolean succes;
-  OTDBnode aNode;
-  // Construct java Vector
-  jobject jNode;
-  jclass class_Vector = env->FindClass ("java/util/Vector");
-  jmethodID mid_Vector_elementAt = env->GetMethodID (class_Vector, "elementAt", "(I)Ljava/lang/Object;");
-  jmethodID mid_Vector_size = env->GetMethodID (class_Vector, "size", "()I");	  
+  try {
+    OTDBnode aNode;
+    // Construct java Vector
+    jobject jNode;
+    jclass class_Vector = env->FindClass ("java/util/Vector");
+    jmethodID mid_Vector_elementAt = env->GetMethodID (class_Vector, "elementAt", "(I)Ljava/lang/Object;");
+    jmethodID mid_Vector_size = env->GetMethodID (class_Vector, "size", "()I");	  
   
-  jclass class_jOTDBnode = env->FindClass ("nl/astron/lofar/sas/otb/jotdb2/jOTDBnode");
-  jfieldID fid_jOTDBnode_itsTreeID = env->GetFieldID (class_jOTDBnode, "itsTreeID", "I");
-  jfieldID fid_jOTDBnode_itsNodeID = env->GetFieldID (class_jOTDBnode, "itsNodeID", "I");
+    jclass class_jOTDBnode = env->FindClass ("nl/astron/lofar/sas/otb/jotdb2/jOTDBnode");
+    jfieldID fid_jOTDBnode_itsTreeID = env->GetFieldID (class_jOTDBnode, "itsTreeID", "I");
+    jfieldID fid_jOTDBnode_itsNodeID = env->GetFieldID (class_jOTDBnode, "itsNodeID", "I");
   
-  for (int i = 0; i < env->CallIntMethod (jNodeList, mid_Vector_size); i++)
-    {	  
+    for (int i = 0; i < env->CallIntMethod (jNodeList, mid_Vector_size); i++) {	  
       jNode = env->CallObjectMethod (jNodeList, mid_Vector_elementAt, i);
       // Get original OTDB node
       aNode = theirTM->getNode (env->GetIntField (jNode, fid_jOTDBnode_itsTreeID), env->GetIntField (jNode, fid_jOTDBnode_itsNodeID));
       succes = theirTM->deleteNode (aNode);
       if (!succes)
 	return succes;
-    }	   
+    }
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::deleteNodeList" << ex.what() << endl; 
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+	   
   return succes;	  
 }
 
@@ -379,8 +566,16 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
  * Method:    checkTreeConstraints
  * Signature: (II)Z
  */
-JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeaintenance_checkTreeConstraints(JNIEnv *, jobject, jint aTreeID, jint topNode) {
-  //  return theirTM->checkTreeConstraints (aTreeID, topNode);
+JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeaintenance_checkTreeConstraints(JNIEnv *env, jobject, jint aTreeID, jint topNode) {
+  jboolean aB;
+  try {
+  //  aB=theirTM->checkTreeConstraints (aTreeID, topNode);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::checkTreeConstraints(" << aTreeID << "," << topNode << ") "<< ex.what() << endl; 
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
+  return aB;
 }
 
 /*
@@ -388,17 +583,33 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeaintenance_c
  * Method:    instanciateTree
  * Signature: (I)I
  */
-JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_instanciateTree(JNIEnv *, jobject, jint baseTree) {
-  return theirTM->instanciateTree (baseTree);
+JNIEXPORT jint JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_instanciateTree(JNIEnv *env, jobject, jint baseTree) {
+  jint anID;
+  try {
+    anID= theirTM->instanciateTree (baseTree);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::instantiateTree(" << baseTree << ") " << ex.what() << endl; 
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+  return anID;
 }
 
 /*
- * Class:     nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance
+ * Class:     nl_astron_lofar_sas_otb_jotdb2_jTreeMantenance
  * Method:    pruneTree
  * Signature: (IS)Z
  */
-JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_pruneTree(JNIEnv *, jobject, jint aTreeID, jshort pruningLevel) {
-  return theirTM->pruneTree (aTreeID, pruningLevel);
+JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_pruneTree(JNIEnv *env, jobject, jint aTreeID, jshort pruningLevel) {
+
+  jboolean aB;
+  try {
+    aB= theirTM->pruneTree (aTreeID, pruningLevel);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::pruneTree(" << aTreeID << "," << pruningLevel << ") " << ex.what() << endl; 
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
+  return aB;
 }
 
 /*
@@ -409,9 +620,16 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
 JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_exportTree(JNIEnv *env, jobject, jint treeID, jint topItem, jstring aName, jint outputFormat, jboolean folded) {
 
   jboolean isCopy;
+  jboolean succes;
   const char* name = env->GetStringUTFChars (aName, &isCopy);
-  jboolean succes = theirTM->exportTree (treeID, topItem, name, (TreeMaintenance::formatType)outputFormat , folded);
-  env->ReleaseStringUTFChars (aName, name);
+  try {
+    succes = theirTM->exportTree (treeID, topItem, name, (TreeMaintenance::formatType)outputFormat , folded);
+    env->ReleaseStringUTFChars (aName, name);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::exportTree(" << treeID << "," << topItem << "," << name << "," << (TreeMaintenance::formatType)outputFormat << "," << folded << ") "<< ex.what() << endl; 
+    env->ReleaseStringUTFChars (aName, name);
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   
   return succes;
 }
@@ -425,11 +643,11 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
   jboolean succes;
   try {
     succes=theirTM->deleteTree (aTreeID);
-  } catch (exception ex) {
-    cout << "Exception found: "<< ex.what() << endl;
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::deleteTree(" << aTreeID << ") " << ex.what() << endl; 
     env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
-    //    env->ExceptionClear();
   }
+
   return succes;
 }
 
@@ -439,7 +657,15 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
  * Signature: (I)Lnl/astron/lofar/sas/otb/jotdb2/jOTDBnode;
  */
 JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_getTopNode(JNIEnv *env, jobject, jint aTreeID) {
-  OTDBnode aNode = theirTM->getTopNode (aTreeID);
+
+  OTDBnode aNode;
+  try {
+    aNode = theirTM->getTopNode (aTreeID);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::getTopNode(" << aTreeID << ") " << ex.what() << endl; 
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return convertOTDBnode (env, aNode);
 }
 
@@ -450,10 +676,16 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_g
  */
 JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_setMomInfo(JNIEnv *env, jobject, jint aTreeID, jint aMomID, jstring aCampaign) {
   jboolean isCopy;
+  jboolean succes;  
   const char* name = env->GetStringUTFChars (aCampaign, &isCopy);
-  jboolean succes = theirTM->setMomInfo (aTreeID, aMomID, name);
-  env->ReleaseStringUTFChars (aCampaign, name);
-  
+  try {
+    succes = theirTM->setMomInfo (aTreeID, aMomID, name);
+    env->ReleaseStringUTFChars (aCampaign, name);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::setMomInfo(" << aTreeID << "," << aMomID << "," << name <<  ") " << ex.what() << endl; 
+    env->ReleaseStringUTFChars (aCampaign, name);
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }  
   return succes;
 }
 
@@ -462,8 +694,15 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
  * Method:    setClassification
  * Signature: (IS)Z
  */
-JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_setClassification(JNIEnv *, jobject, jint aTreeID, jshort aClassification) {
-  return theirTM->setClassification (aTreeID, aClassification);
+JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_setClassification(JNIEnv *env, jobject, jint aTreeID, jshort aClassification) {
+  jboolean succes;
+  try {
+    succes=theirTM->setClassification (aTreeID, aClassification);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::setClassification(" << aTreeID << "," << aClassification <<  ") " << ex.what() << endl; 
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }  
+  return succes;
 }
 
 /*
@@ -471,8 +710,15 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
  * Method:    setTreeState
  * Signature: (IS)Z
  */
-JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_setTreeState(JNIEnv *, jobject, jint aTreeID, jshort aState) {
-  return theirTM->setTreeState (aTreeID, aState);
+JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_setTreeState(JNIEnv *env, jobject, jint aTreeID, jshort aState) {
+  jboolean aB;
+  try {
+    theirTM->setTreeState (aTreeID, aState);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::setTreeState(" << aTreeID << "," << aState <<  ") " << ex.what() << endl; 
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }  
+  return aB;
 }
 
 /*
@@ -482,9 +728,17 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
  */
 JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_setDescription(JNIEnv *env, jobject, jint aTreeID, jstring aDesc) {
   jboolean isCopy;
+  jboolean succes;
   const char* desc = env->GetStringUTFChars (aDesc, &isCopy);
-  jboolean succes = theirTM->setDescription (aTreeID, desc);
-  env->ReleaseStringUTFChars (aDesc, desc);
+  try {
+    succes = theirTM->setDescription (aTreeID, desc);
+    env->ReleaseStringUTFChars (aDesc, desc);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::setDescription(" << aTreeID << "," << desc <<  ") " << ex.what() << endl; 
+    env->ReleaseStringUTFChars (aDesc, desc);
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }  
+
   return succes;
 }
 
@@ -500,7 +754,18 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
   const string endTime (ed);
   const ptime ts (time_from_string (startTime));
   const ptime te (time_from_string (endTime));
-  return theirTM->setSchedule(treeID,ts,te);
+  jboolean aB;
+  try {
+    aB= theirTM->setSchedule(treeID,ts,te);
+    env->ReleaseStringUTFChars (aStartTime, bd);
+    env->ReleaseStringUTFChars (anEndTime, ed);
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::setSchedule(" << treeID << "," << ts << "," << te <<  ") " << ex.what() << endl; 
+    env->ReleaseStringUTFChars (aStartTime, bd);
+    env->ReleaseStringUTFChars (anEndTime, ed);
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }  
+  return aB;
 }
 
 
@@ -510,7 +775,15 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_
  * Signature: ()Ljava/lang/String;
  */
 JNIEXPORT jstring JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeMaintenance_errorMsg(JNIEnv *env, jobject) {
-  return env->NewStringUTF(theirConn->errorMsg().c_str());
+  jstring aS;
+  try {
+    aS = env->NewStringUTF(theirConn->errorMsg().c_str());
+  } catch (exception &ex) {
+    cout << "Exception during TreeMaintenance::errorMsg" << ex.what() << endl; 
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }  
+  return aS;
+
 }
 
 
diff --git a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv.cc b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv.cc
index 6ffc3fcf50959bf751e6d35bade2042d0d79381b..63311fa14a4c3f97d29ed127b8aae3c0b1997551 100644
--- a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv.cc
+++ b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv.cc
@@ -44,9 +44,16 @@ extern OTDBconnection* theirConn;
  * Method:    initTreeStateConv
  * Signature: ()V
  */
-JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv_initTreeStateConv(JNIEnv *, jobject) {
+JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv_initTreeStateConv(JNIEnv *env, jobject) {
   
-  treeStateConv = new TreeStateConv(theirConn);
+  try {
+    treeStateConv = new TreeStateConv(theirConn);
+  } catch (exception &ex) {
+    cout << "Exception during new TreeStateConv "<< ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
 }
 
 /*
@@ -59,9 +66,17 @@ JNIEXPORT jshort JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv_get_
   const char* chars = env->GetStringUTFChars (aConv, 0);
   const string str (chars);
   
-  short ret = treeStateConv->get (str);
+  short ret;
+  try {
+    ret= treeStateConv->get (str);
   
-  env->ReleaseStringUTFChars (aConv, chars);	     
+    env->ReleaseStringUTFChars (aConv, chars);	     
+  } catch (exception &ex) {
+    cout << "Exception during TreeStateConv::get(" << str << ") " << ex.what() << endl; 
+
+    env->ReleaseStringUTFChars (aConv, chars);	     
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   
   return ret;
 }
@@ -72,7 +87,15 @@ JNIEXPORT jshort JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv_get_
  * Signature: (S)Ljava/lang/String;
  */
 JNIEXPORT jstring JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv_get__S(JNIEnv *env, jobject, jshort aConv) {
-  jstring jstr = env->NewStringUTF (treeStateConv->get(aConv).c_str());
+  jstring jstr;
+  try {
+    jstr= env->NewStringUTF (treeStateConv->get(aConv).c_str());
+  } catch (exception &ex) {
+    cout << "Exception during TreeStateConv::get(" << aConv << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return jstr;
 }
 
@@ -97,30 +120,35 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv_get
   shortInit = env->GetMethodID(shortClass, "<init>", "(S)V");
   
 
-
-  if ( env->ExceptionOccurred() )
-    return 0;
+  try {
+    if ( env->ExceptionOccurred() )
+      return 0;
     
-  put= env->GetMethodID(mapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
-
-  if ( env->ExceptionOccurred() )
-    return 0;
+    put= env->GetMethodID(mapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
+ 
+    if ( env->ExceptionOccurred() )
+      return 0;
  
-  treeStateConv->top();
-  do {
-    treeState key;
-    string value;
-
-    if (treeStateConv->get(key, value)) {
-      env->CallObjectMethod(result, put, env->NewObject(shortClass,
-							shortInit,
-							(jshort)key), 
-							env->NewStringUTF(value.c_str()));
-
-      if ( env->ExceptionOccurred() )
-	return 0;
-   }
-  } while (treeStateConv->next());
+    treeStateConv->top();
+    do {
+      treeState key;
+      string value;
+
+      if (treeStateConv->get(key, value)) {
+        env->CallObjectMethod(result, put, env->NewObject(shortClass,
+							  shortInit,
+							  (jshort)key), 
+							  env->NewStringUTF(value.c_str()));
+
+        if ( env->ExceptionOccurred() )
+	  return 0;
+      }
+    } while (treeStateConv->next());
+  } catch (exception &ex) {
+    cout << "Exception during TreeStateConv::getTypes" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 
   return result;
 
@@ -131,8 +159,15 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv_get
  * Method:    top
  * Signature: ()V
  */
-JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv_top(JNIEnv *, jobject) {
-  treeStateConv->top();
+JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv_top(JNIEnv *env, jobject) {
+  try {
+    treeStateConv->top();
+  } catch (exception &ex) {
+    cout << "Exception during TreeStateConv::top" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
 }
 
 
@@ -141,7 +176,15 @@ JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv_top(JN
  * Method:    next
  * Signature: ()Z
  */
-JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv_next(JNIEnv *, jobject) {
-  jboolean aBool=treeStateConv->next();
+JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeStateConv_next(JNIEnv *env, jobject) {
+  jboolean aBool;
+  try {
+    aBool=treeStateConv->next();
+  } catch (exception &ex) {
+    cout << "Exception during TreeStateConv::next" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return aBool;
 }
diff --git a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv.cc b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv.cc
index eac6e2a0bcbc8da795fd12668d05e0875bf650df..788cbe99897da6018f2695eb3aafca78c74a0d8c 100644
--- a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv.cc
+++ b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv.cc
@@ -44,9 +44,15 @@ extern OTDBconnection* theirConn;
  * Method:    initTreeTypeConv
  * Signature: ()V
  */
-JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_initTreeTypeConv(JNIEnv *, jobject) {
-  
-  treeTypeConv = new TreeTypeConv(theirConn);
+JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_initTreeTypeConv(JNIEnv *env, jobject) {
+  try {
+    treeTypeConv = new TreeTypeConv(theirConn);
+  } catch (exception &ex) {
+    cout << "Exception during new TreeTypeConv::top" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
 }
 
 /*
@@ -59,9 +65,18 @@ JNIEXPORT jshort JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_get__
   const char* chars = env->GetStringUTFChars (aConv, 0);
   const string str (chars);
   
-  short ret = treeTypeConv->get (str);
+  short ret;
+  try {
+    ret= treeTypeConv->get (str);
   
-  env->ReleaseStringUTFChars (aConv, chars);	     
+    env->ReleaseStringUTFChars (aConv, chars);	     
+  } catch (exception &ex) {
+    cout << "Exception during TreeTypeConv::get(" << str << ") " << ex.what() << endl; 
+
+    env->ReleaseStringUTFChars (aConv, chars);	     
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   
   return ret;
 }
@@ -72,7 +87,15 @@ JNIEXPORT jshort JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_get__
  * Signature: (S)Ljava/lang/String;
  */
 JNIEXPORT jstring JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_get__S(JNIEnv *env, jobject, jshort aConv) {
-  jstring jstr = env->NewStringUTF (treeTypeConv->get(aConv).c_str());
+  jstring jstr;
+  try {
+    jstr= env->NewStringUTF (treeTypeConv->get(aConv).c_str());
+  } catch (exception &ex) {
+    cout << "Exception during TreeTypeConv::get(" << aConv << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return jstr;
 }
 
@@ -97,7 +120,6 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_getT
   shortInit = env->GetMethodID(shortClass, "<init>", "(S)V");
   
 
-
   if ( env->ExceptionOccurred() )
     return 0;
     
@@ -106,21 +128,28 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_getT
   if ( env->ExceptionOccurred() )
     return 0;
  
-  treeTypeConv->top();
-  do {
-    treeType key;
-    string value;
-
-    if (treeTypeConv->get(key, value)) {
-      env->CallObjectMethod(result, put, env->NewObject(shortClass,
-							shortInit,
-							(jshort)key), 
-							env->NewStringUTF(value.c_str()));
-
-      if ( env->ExceptionOccurred() )
-	return 0;
-   }
-  } while (treeTypeConv->next());
+  try {
+
+    treeTypeConv->top();
+    do {
+      treeType key;
+      string value;
+
+      if (treeTypeConv->get(key, value)) {
+        env->CallObjectMethod(result, put, env->NewObject(shortClass,
+							  shortInit,
+							  (jshort)key), 
+							  env->NewStringUTF(value.c_str()));
+
+        if ( env->ExceptionOccurred() )
+  	  return 0;
+     }
+    } while (treeTypeConv->next());
+  } catch (exception &ex) {
+    cout << "Exception during TreeTypeConv::getTypes(" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 
   return result;
 
@@ -131,8 +160,15 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_getT
  * Method:    top
  * Signature: ()V
  */
-JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_top(JNIEnv *, jobject) {
-  treeTypeConv->top();
+JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_top(JNIEnv *env, jobject) {
+  try {
+    treeTypeConv->top();
+  } catch (exception &ex) {
+    cout << "Exception during TreeTypeConv::top(" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
 }
 
 
@@ -141,7 +177,15 @@ JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_top(JNI
  * Method:    next
  * Signature: ()Z
  */
-JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_next(JNIEnv *, jobject) {
-  jboolean aBool=treeTypeConv->next();
+JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeTypeConv_next(JNIEnv *env, jobject) {
+  jboolean aBool;
+  try {
+    aBool=treeTypeConv->next();
+  } catch (exception &ex) {
+    cout << "Exception during TreeTypeConv::next(" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return aBool;
 }
diff --git a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeValue.cc b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeValue.cc
index 4945425a47e845a6c205399cedeff6130e1af221..b4efcf479e5346f6982e4845ebcfd80f9a80d2b8 100644
--- a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeValue.cc
+++ b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jTreeValue.cc
@@ -25,21 +25,18 @@
 //# Includes
 #include <Common/LofarLogger.h>
 #include <jni.h>
+#include <jOTDB2/nl_astron_lofar_sas_otb_jotdb2_jCommon.h>
 #include <jOTDB2/nl_astron_lofar_sas_otb_jotdb2_jOTDBconnection.h>
-#include <OTDB/TreeValue.h>
-#include <OTDB/OTDBvalue.h>
+#include <jOTDB2/nl_astron_lofar_sas_otb_jotdb2_jTreeValue.h>
 #include <boost/date_time/posix_time/ptime.hpp>
 #include <boost/date_time/posix_time/time_formatters.hpp>
 #include <boost/date_time/posix_time/time_parsers.hpp>
 #include <string>
 #include <iostream>
-#include <jOTDB2/nl_astron_lofar_sas_otb_jotdb2_jCommon.h>
-#include <jOTDB2/nl_astron_lofar_sas_otb_jotdb2_jTreeValue.h>
 
 using namespace boost::posix_time;
 using namespace LOFAR::OTDB;
-using std::string;
-using std::vector;
+using namespace std;
 
 TreeValue* treeval;
 extern OTDBconnection* theirConn;
@@ -65,13 +62,23 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeValue_addKVT
   
   const ptime aTime (time_from_string (aT));
 
-  jboolean succes=treeval->addKVT(aKey,aValue,aTime);
-
-  env->ReleaseStringUTFChars (key ,ak);
-  env->ReleaseStringUTFChars (val ,av);
-  env->ReleaseStringUTFChars (time ,at);
+  jboolean succes;
+  try {
+    succes=treeval->addKVT(aKey,aValue,aTime);
+    
+    env->ReleaseStringUTFChars (key ,ak);
+    env->ReleaseStringUTFChars (val ,av);
+    env->ReleaseStringUTFChars (time ,at);
+    setErrorMsg(env,obj);
+  } catch (exception &ex) {
+    cout << "Exception during treeValue::addKVT(" << aKey << "," << aValue << "," << aTime << ") " << ex.what() << endl; 
+
+    env->ReleaseStringUTFChars (key ,ak);
+    env->ReleaseStringUTFChars (val ,av);
+    env->ReleaseStringUTFChars (time ,at);
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 
-  setErrorMsg(env,obj);
   return succes;
 }
 
@@ -86,9 +93,16 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeValue_addKVT
   setTreeValConnection(env,obj);
 
   OTDBvalue anOTDBvalue = convertjOTDBvalue (env, jOTDBval);
-  jboolean succes = treeval->addKVT(anOTDBvalue);
+  jboolean succes;
+  try {
+    succes = treeval->addKVT(anOTDBvalue);
+    setErrorMsg(env,obj);
+  } catch (exception &ex) {
+    cout << "Exception during treeValue::addKVT" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 
-  setErrorMsg(env,obj);
 
   return succes;
 }
@@ -122,8 +136,16 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeValue_addKVT
   }
 
   setErrorMsg(env,obj);
-  
-  return treeval->addKVTlist(aCValList);
+
+  jboolean succes;
+  try {
+    succes=treeval->addKVTlist(aCValList);
+  } catch (exception &ex) {
+    cout << "Exception during treeValue::addKVTlist" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+  return succes;
 }
 
 /*
@@ -147,26 +169,33 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeValue_searchI
   
   const ptime ts (time_from_string (beginTime));  
   const ptime te (time_from_string (endTime));  
+  jobject valueVector;
   
-  vector<OTDBvalue> valueList = treeval->searchInPeriod (topNode, depth, ts, te, mostRecentOnly);
-  vector<OTDBvalue>::iterator valueIterator;
+  try {
+    vector<OTDBvalue> valueList = treeval->searchInPeriod (topNode, depth, ts, te, mostRecentOnly);
+    vector<OTDBvalue>::iterator valueIterator;
   
   
-  // Construct java Vector
-  jobject valueVector;
-  jclass class_Vector = env->FindClass("java/util/Vector");
-  jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
-  valueVector = env->NewObject(class_Vector, mid_Vector_cons);
-  jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
-  
-  for (valueIterator = valueList.begin(); valueIterator != valueList.end(); valueIterator++)
-    env->CallObjectMethod(valueVector, mid_Vector_add, convertOTDBvalue (env, *valueIterator));
+    // Construct java Vector
+    jclass class_Vector = env->FindClass("java/util/Vector");
+    jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
+    valueVector = env->NewObject(class_Vector, mid_Vector_cons);
+    jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
   
-  env->ReleaseStringUTFChars (beginDate, bd);
-  env->ReleaseStringUTFChars (endDate, ed);	     
+    for (valueIterator = valueList.begin(); valueIterator != valueList.end(); valueIterator++)
+      env->CallObjectMethod(valueVector, mid_Vector_add, convertOTDBvalue (env, *valueIterator));
+    
+    env->ReleaseStringUTFChars (beginDate, bd);
+    env->ReleaseStringUTFChars (endDate, ed);	     
+    
+    setErrorMsg(env,obj);
+  } catch (exception &ex) {
+    cout << "Exception during treeValue::searchInPeriod(" << topNode << "," 
+	 << depth << "," << ts << "," << mostRecentOnly << ") "<< ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
 
-  setErrorMsg(env,obj);
-  
+  }
   return valueVector;	     
 }
 
@@ -179,23 +208,29 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jTreeValue_getSche
 
   // create the connection with the c++ TreeVal
   setTreeValConnection(env,obj);
+  jobject itemVector;
 
-  vector<OTDBvalue> itemList = treeval->getSchedulableItems(aNodeID);
-  vector<OTDBvalue>::iterator itemIterator;
+  try {
+    vector<OTDBvalue> itemList = treeval->getSchedulableItems(aNodeID);
+    vector<OTDBvalue>::iterator itemIterator;
 
-  // Construct java Vector
-  jobject itemVector;
-  jclass class_Vector = env->FindClass("java/util/Vector");
-  jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
-  itemVector = env->NewObject(class_Vector, mid_Vector_cons);
-  jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
+    // Construct java Vector
+    jclass class_Vector = env->FindClass("java/util/Vector");
+    jmethodID mid_Vector_cons = env->GetMethodID(class_Vector, "<init>", "()V");
+    itemVector = env->NewObject(class_Vector, mid_Vector_cons);
+    jmethodID mid_Vector_add = env->GetMethodID(class_Vector, "add", "(Ljava/lang/Object;)Z");
 
-  for (itemIterator = itemList.begin(); itemIterator != itemList.end(); itemIterator++)
-    env->CallObjectMethod(itemVector, 
-			  mid_Vector_add, 
-			  convertOTDBvalue (env, *itemIterator));
+    for (itemIterator = itemList.begin(); itemIterator != itemList.end(); itemIterator++)
+      env->CallObjectMethod(itemVector, 
+			    mid_Vector_add, 
+			    convertOTDBvalue (env, *itemIterator));
 
-  setErrorMsg(env,obj);
+    setErrorMsg(env,obj);
+  } catch (exception &ex) {
+    cout << "Exception during treeValue::getSchedulableItems(" << aNodeID << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 
   return itemVector;
 }
@@ -213,7 +248,13 @@ void  setTreeValConnection(JNIEnv *env, jobject callerObject) {
   jint aTreeID = env->GetIntField(callerObject,id_treeID);
 
   // create the connection with the c++ TreeVal
-  treeval = new TreeValue(theirConn,aTreeID);
+  try {
+    treeval = new TreeValue(theirConn,aTreeID);
+  } catch (exception &ex) {
+    cout << "Exception during new treeValue" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 }
 
 void setErrorMsg(JNIEnv *env, jobject callerObject) {
@@ -224,7 +265,14 @@ void setErrorMsg(JNIEnv *env, jobject callerObject) {
   jfieldID id_errorMsg = env->GetFieldID (jTreeValue, "itsErrorMsg","Ljava/lang/String;");
 
   // get the ErrorMsg
-  jstring errorMsg=env->NewStringUTF(theirConn->errorMsg().c_str());
+  jstring errorMsg;
+  try {
+    errorMsg=env->NewStringUTF(theirConn->errorMsg().c_str());
+  } catch (exception &ex) {
+    cout << "Exception during errorMsg" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 
   // set the ErrorMsg in the jTreeValue
   env->SetObjectField(callerObject,id_errorMsg,errorMsg);
diff --git a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jUnitConv.cc b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jUnitConv.cc
index 5aa077f65a0cab1db0732d6589878afb18cafa0a..e55600e3e8c6b915a05525b6ddae4ad9b8f08e3d 100644
--- a/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jUnitConv.cc
+++ b/SAS/OTB/jOTDB2/src/nl_astron_lofar_sas_otb_jotdb2_jUnitConv.cc
@@ -44,9 +44,16 @@ extern OTDBconnection* theirConn;
  * Method:    initUnitConv
  * Signature: ()V
  */
-JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_initUnitConv(JNIEnv *, jobject) {
+JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_initUnitConv(JNIEnv *env, jobject) {
   
-  unitConv = new UnitConv(theirConn);
+  try {
+    unitConv = new UnitConv(theirConn);
+  } catch (exception &ex) {
+    cout << "Exception during new UnitConv" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
 }
 
 /*
@@ -59,9 +66,17 @@ JNIEXPORT jshort JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_get__Ljav
   const char* chars = env->GetStringUTFChars (aConv, 0);
   const string str (chars);
   
-  short ret = unitConv->get (str);
+  short ret;
+  try {
+    ret = unitConv->get (str);
   
-  env->ReleaseStringUTFChars (aConv, chars);	     
+    env->ReleaseStringUTFChars (aConv, chars);	     
+  } catch (exception &ex) {
+    cout << "Exception during UnitConv::get(" << str << ") " << ex.what() << endl; 
+
+    env->ReleaseStringUTFChars (aConv, chars);	     
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
   
   return ret;
 }
@@ -72,7 +87,15 @@ JNIEXPORT jshort JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_get__Ljav
  * Signature: (S)Ljava/lang/String;
  */
 JNIEXPORT jstring JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_get__S(JNIEnv *env, jobject, jshort aConv) {
-  jstring jstr = env->NewStringUTF (unitConv->get(aConv).c_str());
+  jstring jstr;
+  try {
+    jstr= env->NewStringUTF (unitConv->get(aConv).c_str());
+  } catch (exception &ex) {
+    cout << "Exception during UnitConv::get(" << aConv << ") " << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return jstr;
 }
 
@@ -97,7 +120,6 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_getTypes
   shortInit = env->GetMethodID(shortClass, "<init>", "(S)V");
   
 
-
   if ( env->ExceptionOccurred() )
     return 0;
     
@@ -106,21 +128,28 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_getTypes
   if ( env->ExceptionOccurred() )
     return 0;
  
-  unitConv->top();
-  do {
-    unitType key;
-    string value;
-
-    if (unitConv->get(key, value)) {
-      env->CallObjectMethod(result, put, env->NewObject(shortClass,
-							shortInit,
-							(jshort)key), 
-							env->NewStringUTF(value.c_str()));
-
-      if ( env->ExceptionOccurred() )
-	return 0;
-   }
-  } while (unitConv->next());
+  try {
+    unitConv->top();
+    do {
+      unitType key;
+      string value;
+
+      if (unitConv->get(key, value)) {
+        env->CallObjectMethod(result, put, env->NewObject(shortClass,
+							  shortInit,
+							  (jshort)key), 
+							  env->NewStringUTF(value.c_str()));
+
+        if ( env->ExceptionOccurred() )
+	  return 0;
+     }
+    } while (unitConv->next());
+  } catch (exception &ex) {
+    cout << "Exception during UnitConv::getTypes"  << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
 
   return result;
 
@@ -131,8 +160,15 @@ JNIEXPORT jobject JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_getTypes
  * Method:    top
  * Signature: ()V
  */
-JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_top(JNIEnv *, jobject) {
-  unitConv->top();
+JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_top(JNIEnv *env, jobject) {
+    
+  try {
+    unitConv->top();
+  } catch (exception &ex) {
+    cout << "Exception during UnitConv::top" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
 }
 
 
@@ -141,7 +177,15 @@ JNIEXPORT void JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_top(JNIEnv
  * Method:    next
  * Signature: ()Z
  */
-JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_next(JNIEnv *, jobject) {
-  jboolean aBool=unitConv->next();
+JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb2_jUnitConv_next(JNIEnv *env, jobject) {
+  jboolean aBool;
+  try {
+    aBool=unitConv->next();
+  } catch (exception &ex) {
+    cout << "Exception during UnitConv::next" << ex.what() << endl; 
+
+    env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
+  }
+
   return aBool;
 }