diff --git a/sdbusplus/asio/object_server.hpp b/sdbusplus/asio/object_server.hpp
index f535c44..f6a856a 100644
--- a/sdbusplus/asio/object_server.hpp
+++ b/sdbusplus/asio/object_server.hpp
@@ -395,8 +395,7 @@
 
             catch (sdbusplus::exception_t& e)
             {
-                sd_bus_error_set(error, e.name(), e.description());
-                return -EINVAL;
+                return sd_bus_error_set(error, e.name(), e.description());
             }
             catch (...)
             {
@@ -404,8 +403,7 @@
             }
 #endif
         }
-        sd_bus_error_set_const(error, SD_BUS_ERROR_INVALID_ARGS, NULL);
-        return -EINVAL;
+        return sd_bus_error_set_const(error, SD_BUS_ERROR_INVALID_ARGS, NULL);
     }
 
     static int set_handler(sd_bus* bus, const char* path, const char* interface,
@@ -432,8 +430,7 @@
 
             catch (sdbusplus::exception_t& e)
             {
-                sd_bus_error_set(error, e.name(), e.description());
-                return -EINVAL;
+                return sd_bus_error_set(error, e.name(), e.description());
             }
             catch (...)
             {
@@ -441,8 +438,7 @@
             }
 #endif
         }
-        sd_bus_error_set_const(error, SD_BUS_ERROR_INVALID_ARGS, NULL);
-        return -EINVAL;
+        return sd_bus_error_set_const(error, SD_BUS_ERROR_INVALID_ARGS, NULL);
     }
 
     static int method_handler(sd_bus_message* m, void* userdata,
@@ -467,8 +463,7 @@
 
             catch (sdbusplus::exception_t& e)
             {
-                sd_bus_error_set(error, e.name(), e.description());
-                return -EINVAL;
+                return sd_bus_error_set(error, e.name(), e.description());
             }
             catch (...)
             {
@@ -476,8 +471,7 @@
             }
 #endif
         }
-        sd_bus_error_set_const(error, SD_BUS_ERROR_INVALID_ARGS, NULL);
-        return -EINVAL;
+        return sd_bus_error_set_const(error, SD_BUS_ERROR_INVALID_ARGS, NULL);
     }
 
     bool initialize()
diff --git a/tools/sdbusplus/templates/method.mako.prototype.hpp.in b/tools/sdbusplus/templates/method.mako.prototype.hpp.in
index 35c0cb9..2053b1c 100644
--- a/tools/sdbusplus/templates/method.mako.prototype.hpp.in
+++ b/tools/sdbusplus/templates/method.mako.prototype.hpp.in
@@ -163,14 +163,12 @@
     }
     catch(sdbusplus::internal_exception_t& e)
     {
-        sd_bus_error_set(error, e.name(), e.description());
-        return -EINVAL;
+        return sd_bus_error_set(error, e.name(), e.description());
     }
     % for e in method.errors:
     catch(sdbusplus::${error_namespace(e)}::${error_name(e)}& e)
     {
-        sd_bus_error_set(error, e.name(), e.description());
-        return -EINVAL;
+        return sd_bus_error_set(error, e.name(), e.description());
     }
     % endfor
 
diff --git a/tools/sdbusplus/templates/property.mako.prototype.hpp.in b/tools/sdbusplus/templates/property.mako.prototype.hpp.in
index b170df6..4e280f6 100644
--- a/tools/sdbusplus/templates/property.mako.prototype.hpp.in
+++ b/tools/sdbusplus/templates/property.mako.prototype.hpp.in
@@ -54,14 +54,12 @@
     }
     catch(sdbusplus::internal_exception_t& e)
     {
-        o->_intf->sd_bus_error_set(error, e.name(), e.description());
-        return -EINVAL;
+        return o->_intf->sd_bus_error_set(error, e.name(), e.description());
     }
     % for e in property.errors:
     catch(sdbusplus::${error_namespace(e)}::${error_name(e)}& e)
     {
-        o->_intf->sd_bus_error_set(error, e.name(), e.description());
-        return -EINVAL;
+        return o->_intf->sd_bus_error_set(error, e.name(), e.description());
     }
     % endfor
 
@@ -120,14 +118,12 @@
     }
     catch(sdbusplus::internal_exception_t& e)
     {
-        o->_intf->sd_bus_error_set(error, e.name(), e.description());
-        return -EINVAL;
+        return o->_intf->sd_bus_error_set(error, e.name(), e.description());
     }
     % for e in property.errors:
     catch(sdbusplus::${error_namespace(e)}::${error_name(e)}& e)
     {
-        o->_intf->sd_bus_error_set(error, e.name(), e.description());
-        return -EINVAL;
+        return o->_intf->sd_bus_error_set(error, e.name(), e.description());
     }
     % endfor
 
