From e7807d3dd59ab19302809b776bae245908ee5c6a Mon Sep 17 00:00:00 2001 From: Stefano Borini <sborini@enthought.com> Date: Thu, 10 Aug 2017 13:22:12 +0100 Subject: [PATCH] Handle failure to finalize listeners in a more elegant way --- force_bdss/core_mco_driver.py | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/force_bdss/core_mco_driver.py b/force_bdss/core_mco_driver.py index ee22353..c8e8aea 100644 --- a/force_bdss/core_mco_driver.py +++ b/force_bdss/core_mco_driver.py @@ -36,13 +36,7 @@ class CoreMCODriver(BaseCoreDriver): @on_trait_change("application:stopping") def application_stopping(self): for listener in self.listeners: - try: - listener.finalize(None) - except Exception as e: - log.error( - "Failed to finalize " - "listener {}: {}".format( - listener.__class__.__name__, str(e))) + self._finalize_listener(listener) def _mco_default(self): try: @@ -66,17 +60,7 @@ class CoreMCODriver(BaseCoreDriver): listener.__class__.__name__, str(e) )) - - try: - listener.finalize() - except Exception: - log.error( - "Exception while finalizing listener {}: {}".format( - listener.__class__.__name__, - str(e) - )) - pass - + self._finalize_listener(listener) self.listeners.remove(listener) def _listeners_default(self): @@ -95,3 +79,17 @@ class CoreMCODriver(BaseCoreDriver): listeners.append(listener) return listeners + + def _finalize_listener(self, listener): + """Helper method. Finalizes a listener and handles possible + exceptions. it does _not_ remove the listener from the listener + list. + """ + try: + listener.finalize() + except Exception as e: + log.error( + "Exception while finalizing listener {}: {}".format( + listener.__class__.__name__, + str(e) + )) -- GitLab