diff --git a/include/sdbusplus/bus.hpp b/include/sdbusplus/bus.hpp
index 21dfaf9..697804d 100644
--- a/include/sdbusplus/bus.hpp
+++ b/include/sdbusplus/bus.hpp
@@ -9,6 +9,7 @@
 
 #include <algorithm>
 #include <climits>
+#include <exception>
 #include <memory>
 #include <optional>
 #include <string>
@@ -194,6 +195,11 @@
     {
         sd_bus_message* m = nullptr;
         int r = _intf->sd_bus_process(_bus.get(), &m);
+        if (current_exception)
+        {
+            auto ex = std::exchange(current_exception, nullptr);
+            std::rethrow_exception(ex);
+        }
         if (r < 0)
         {
             throw exception::SdBusError(-r, "sd_bus_process");
@@ -207,6 +213,11 @@
     auto process_discard()
     {
         int r = _intf->sd_bus_process(_bus.get(), nullptr);
+        if (current_exception)
+        {
+            auto ex = std::exchange(current_exception, nullptr);
+            std::rethrow_exception(ex);
+        }
         if (r < 0)
         {
             throw exception::SdBusError(-r, "sd_bus_process discard");
@@ -477,6 +488,11 @@
         return _intf;
     }
 
+    void set_current_exception(std::exception_ptr exception)
+    {
+        current_exception = exception;
+    }
+
     friend struct details::bus_friend;
 
   protected:
@@ -486,6 +502,9 @@
     }
     sdbusplus::SdBusInterface* _intf;
     details::bus _bus;
+
+  private:
+    std::exception_ptr current_exception;
 };
 
 inline bus::bus(busp_t b, sdbusplus::SdBusInterface* intf) :
diff --git a/test/bus/exception.cpp b/test/bus/exception.cpp
new file mode 100644
index 0000000..b34398d
--- /dev/null
+++ b/test/bus/exception.cpp
@@ -0,0 +1,30 @@
+#include <sdbusplus/bus.hpp>
+#include <sdbusplus/test/sdbus_mock.hpp>
+
+#include <exception>
+
+#include <gtest/gtest.h>
+
+class Exception : public ::testing::Test
+{
+  protected:
+    sdbusplus::SdBusMock sdbusMock;
+    sdbusplus::bus_t bus = sdbusplus::get_mocked_new(&sdbusMock);
+    std::exception_ptr e =
+        std::make_exception_ptr(std::runtime_error{"current exception"});
+
+    void SetUp() override
+    {
+        bus.set_current_exception(e);
+    }
+};
+
+TEST_F(Exception, BusProcessRethrowsTheCurrentException)
+{
+    EXPECT_THROW(bus.process(), std::runtime_error);
+}
+
+TEST_F(Exception, BusProcessDiscardRethrowsTheCurrentException)
+{
+    EXPECT_THROW(bus.process_discard(), std::runtime_error);
+}
diff --git a/test/meson.build b/test/meson.build
index 0181766..2efdfeb 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -23,6 +23,7 @@
     'async/context',
     'async/task',
     'async/timer',
+    'bus/exception',
     'bus/list_names',
     'bus/match',
     'event/event',
diff --git a/tools/sdbusplus/templates/interface.server.cpp.mako b/tools/sdbusplus/templates/interface.server.cpp.mako
index 2f9af97..2d7d32d 100644
--- a/tools/sdbusplus/templates/interface.server.cpp.mako
+++ b/tools/sdbusplus/templates/interface.server.cpp.mako
@@ -1,3 +1,4 @@
+#include <exception>
 #include <map>
 #include <sdbusplus/sdbus.hpp>
 #include <sdbusplus/sdbuspp_support/server.hpp>
diff --git a/tools/sdbusplus/templates/method.prototype.hpp.mako b/tools/sdbusplus/templates/method.prototype.hpp.mako
index d39491a..9618abd 100644
--- a/tools/sdbusplus/templates/method.prototype.hpp.mako
+++ b/tools/sdbusplus/templates/method.prototype.hpp.mako
@@ -68,9 +68,7 @@
 {
     auto o = static_cast<${interface.classname}*>(context);
 
-    % if method.errors:
     try
-    % endif
     {
         return sdbusplus::sdbuspp::method_callback\
     % if len(method.returns) > 1:
@@ -92,6 +90,11 @@
         return o->get_bus().getInterface()->sd_bus_error_set(error, e.name(), e.description());
     }
     % endfor
+    catch (const std::exception&)
+    {
+        o->get_bus().set_current_exception(std::current_exception());
+        return 1;
+    }
 }
 
 namespace details
diff --git a/tools/sdbusplus/templates/property.prototype.hpp.mako b/tools/sdbusplus/templates/property.prototype.hpp.mako
index aa35671..bc7c323 100644
--- a/tools/sdbusplus/templates/property.prototype.hpp.mako
+++ b/tools/sdbusplus/templates/property.prototype.hpp.mako
@@ -28,9 +28,7 @@
 {
     auto o = static_cast<${interface.classname}*>(context);
 
-    % if property.errors:
     try
-    % endif
     {
         return sdbusplus::sdbuspp::property_callback(
                 reply, o->get_bus().getInterface(), error,
@@ -47,6 +45,11 @@
         return o->get_bus().getInterface()->sd_bus_error_set(error, e.name(), e.description());
     }
     % endfor
+    catch (const std::exception&)
+    {
+        o->get_bus().set_current_exception(std::current_exception());
+        return 1;
+    }
 }
 
 auto ${interface.classname}::${property.camelCase}(${property.cppTypeParam(interface.name)} value,
@@ -79,9 +82,7 @@
 {
     auto o = static_cast<${interface.classname}*>(context);
 
-    % if property.errors:
     try
-    % endif
     {
         return sdbusplus::sdbuspp::property_callback(
                 value, o->get_bus().getInterface(), error,
@@ -98,6 +99,11 @@
         return o->get_bus().getInterface()->sd_bus_error_set(error, e.name(), e.description());
     }
     % endfor
+    catch (const std::exception&)
+    {
+        o->get_bus().set_current_exception(std::current_exception());
+        return 1;
+    }
 }
 % endif
 
