From c5cf79bf220a4d343cc04cd11d13ffcfb17a1842 Mon Sep 17 00:00:00 2001
From: Stefano Borini <sborini@enthought.com>
Date: Mon, 21 May 2018 17:00:39 +0100
Subject: [PATCH] More protections

---
 force_bdss/core_evaluation_driver.py |  5 +++--
 force_bdss/core_mco_driver.py        | 14 ++++++++++++--
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/force_bdss/core_evaluation_driver.py b/force_bdss/core_evaluation_driver.py
index 498fc0c..151da8c 100644
--- a/force_bdss/core_evaluation_driver.py
+++ b/force_bdss/core_evaluation_driver.py
@@ -38,8 +38,9 @@ class CoreEvaluationDriver(BaseCoreDriver):
                 "Unable to create communicator from MCO factory '{}' "
                 "in plugin '{}'. This may indicate a programming "
                 "error in the plugin".format(
-                    mco_factory.get_identifier(),
+                    mco_factory.id,
                     mco_factory.plugin.id))
+            raise
 
         mco_data_values = _get_data_values_from_mco(
             mco_model, mco_communicator)
@@ -100,7 +101,7 @@ def _compute_layer_results(environment_data_values,
                 "Unable to create data source from factory '{}' "
                 "in plugin '{}'. This may indicate a programming "
                 "error in the plugin".format(
-                    factory.get_identifier(),
+                    factory.id,
                     factory.plugin.id))
             raise
 
diff --git a/force_bdss/core_mco_driver.py b/force_bdss/core_mco_driver.py
index 6dfde55..a75f1aa 100644
--- a/force_bdss/core_mco_driver.py
+++ b/force_bdss/core_mco_driver.py
@@ -25,7 +25,17 @@ class CoreMCODriver(BaseCoreDriver):
 
     @on_trait_change("application:started")
     def application_started(self):
-        self.mco.run(self.workflow.mco)
+        mco = self.workflow.mco
+        try:
+            mco.run(self.workflow.mco)
+        except Exception:
+            log.exception(
+                "Method run() of MCO with id '{}' from plugin '{}' "
+                "raised exception. This might indicate a "
+                "programming error in the plugin.".format(
+                    mco.factory.id,
+                    mco.factory.plugin.id))
+            raise
 
     @on_trait_change("application:stopping")
     def application_stopping(self):
@@ -38,7 +48,7 @@ class CoreMCODriver(BaseCoreDriver):
             workflow = self.workflow
         except Exception:
             log.exception("Unable to open workflow file.")
-            sys.exit(1)
+            raise
 
         mco_model = workflow.mco
         if mco_model is None:
-- 
GitLab