diff --git a/sdbusplus/asio/object_server.hpp b/sdbusplus/asio/object_server.hpp
index 91b58ee..a9d5fbf 100644
--- a/sdbusplus/asio/object_server.hpp
+++ b/sdbusplus/asio/object_server.hpp
@@ -202,7 +202,26 @@
         boost::asio::spawn(
             io_, [this, b = std::move(b)](boost::asio::yield_context yield) {
                 message::message mcpy{std::move(b)};
-                expandCall(yield, mcpy);
+                std::optional<message::message> err{};
+
+                try
+                {
+                    expandCall(yield, mcpy);
+                }
+                catch (sdbusplus::exception::SdBusError& e)
+                {
+                    // Catch D-Bus error explicitly called by method handler
+                    err = mcpy.new_method_errno(e.get_errno(), e.get_error());
+                }
+                catch (...)
+                {
+                    err = mcpy.new_method_errno(-EIO);
+                }
+
+                if (err)
+                {
+                    err->method_return();
+                }
             });
         return 1;
     }
@@ -240,7 +259,7 @@
         }
         catch (const exception::SdBusError& e)
         {
-            auto ret = m.new_method_errno(-EINVAL);
+            auto ret = m.new_method_errno(e.get_errno(), e.get_error());
             ret.method_return();
             return;
         }
diff --git a/sdbusplus/exception.cpp b/sdbusplus/exception.cpp
index a0ecc8d..3727122 100644
--- a/sdbusplus/exception.cpp
+++ b/sdbusplus/exception.cpp
@@ -73,6 +73,11 @@
     return intf->sd_bus_error_get_errno(&this->error);
 }
 
+const sd_bus_error* SdBusError::get_error() const noexcept
+{
+    return &error;
+}
+
 void SdBusError::populateMessage(const char* prefix)
 {
     full_message = prefix;
diff --git a/sdbusplus/exception.hpp b/sdbusplus/exception.hpp
index 2eca532..5e49113 100644
--- a/sdbusplus/exception.hpp
+++ b/sdbusplus/exception.hpp
@@ -46,6 +46,7 @@
     const char* description() const noexcept override;
     const char* what() const noexcept override;
     int get_errno() const noexcept;
+    const sd_bus_error* get_error() const noexcept;
 
   private:
     sd_bus_error error;
diff --git a/sdbusplus/message.hpp b/sdbusplus/message.hpp
index b56921b..f7eecc8 100644
--- a/sdbusplus/message.hpp
+++ b/sdbusplus/message.hpp
@@ -315,13 +315,14 @@
     /** @brief Create a 'method_error' type message from an existing message.
      *
      *  @param[in] error - integer error number
+     *  @param[in] e - optional pointer to preformatted sd_bus_error
      *  @return method-error message.
      */
-    message new_method_errno(int error)
+    message new_method_errno(int error, const sd_bus_error* e = nullptr)
     {
         msgp_t reply = nullptr;
         int r = _intf->sd_bus_message_new_method_errno(this->get(), &reply,
-                                                       error, nullptr);
+                                                       error, e);
         if (r < 0)
         {
             throw exception::SdBusError(-r, "sd_bus_message_new_method_errno");
