diff --git a/daemon/src/dbus/dbusmanager.cpp b/daemon/src/dbus/dbusmanager.cpp
index 5d273fab9064575af63c625cedee100725088c09..becd522679892b2a071910dc9c30c3e3c23223f7 100644
--- a/daemon/src/dbus/dbusmanager.cpp
+++ b/daemon/src/dbus/dbusmanager.cpp
@@ -80,11 +80,27 @@ DBusManager::~DBusManager()
 
 void DBusManager::exec()
 {
-    dispatcher_.enter();
+    try {
+        dispatcher_.enter();
+    } catch (const DBus::Error &err) {
+        ERROR("%s: %s, exiting\n", err.name(), err.what());
+        ::exit(EXIT_FAILURE);
+    } catch (const std::exception &err) {
+        ERROR("%s: %s, exiting\n", err.what());
+        ::exit(EXIT_FAILURE);
+    }
 }
 
 void
 DBusManager::exit()
 {
-    dispatcher_.leave();
+    try {
+        dispatcher_.leave();
+    } catch (const DBus::Error &err) {
+        ERROR("%s: %s, exiting\n", err.name(), err.what());
+        ::exit(EXIT_FAILURE);
+    } catch (const std::exception &err) {
+        ERROR("%s: %s, exiting\n", err.what());
+        ::exit(EXIT_FAILURE);
+    }
 }