diff --git a/src/UploaderThread.cxx b/src/UploaderThread.cxx index c7e8eb7..5b6680c 100644 --- a/src/UploaderThread.cxx +++ b/src/UploaderThread.cxx @@ -9,7 +9,7 @@ namespace habitat { void UploaderAction::check(habitat::Uploader *u) { if (u == NULL) - throw runtime_error("Uploader settings were not initialised"); + throw NotInitialisedError(); } void UploaderSettings::apply(UploaderThread &uthr) @@ -224,6 +224,11 @@ void *UploaderThread::run() { break; } + catch (NotInitialisedError &e) + { + caught_exception(e); + continue; + } catch (runtime_error &e) { caught_exception(e); @@ -261,6 +266,12 @@ void UploaderThread::reset_done() log("Settings reset"); } +void UploaderThread::caught_exception(const NotInitialisedError &error) +{ + const string what(error.what()); + warning("Caught NotInitialisedError"); +} + void UploaderThread::caught_exception(const runtime_error &error) { const string what(error.what()); diff --git a/src/UploaderThread.h b/src/UploaderThread.h index df1c6ce..6a3742e 100644 --- a/src/UploaderThread.h +++ b/src/UploaderThread.h @@ -13,6 +13,12 @@ using namespace std; /* Add some more EZ stuff. */ namespace habitat { +class NotInitialisedError : public runtime_error +{ +public: + NotInitialisedError() : runtime_error("habitat::NotInitialisedError") {}; +}; + class UploaderThread; class UploaderAction @@ -187,6 +193,7 @@ public: virtual void saved_id(const string &type, const string &id); virtual void initialised(); virtual void reset_done(); + virtual void caught_exception(const NotInitialisedError &error); virtual void caught_exception(const runtime_error &error); virtual void caught_exception(const invalid_argument &error); virtual void got_flights(const vector &flights); diff --git a/tests/test_uploader.py b/tests/test_uploader.py index f552cb4..5d7fd40 100644 --- a/tests/test_uploader.py +++ b/tests/test_uploader.py @@ -916,7 +916,7 @@ class TestCPPConnectorThreaded(TestCPPConnector): try: self.uploader.payload_telemetry("asdf", {}) except ProxyException as e: - assert "not initialised" in str(e) + assert "NotInitialised" in str(e) else: raise AssertionError("not initialised was not thrown") diff --git a/tests/test_uploader_main.cxx b/tests/test_uploader_main.cxx index 5d33deb..6c41e6b 100644 --- a/tests/test_uploader_main.cxx +++ b/tests/test_uploader_main.cxx @@ -50,6 +50,9 @@ class TestUploaderThread : public habitat::UploaderThread void reset_done() { report_result("return"); }; + void caught_exception(const habitat::NotInitialisedError &error) + { report_result("error", "NotInitialisedError"); } + void caught_exception(const runtime_error &error) { report_result("error", "runtime_error", error.what()); }