diff --git a/control/fan.cpp b/control/fan.cpp
index d4303cf..c86186f 100644
--- a/control/fan.cpp
+++ b/control/fan.cpp
@@ -65,13 +65,25 @@
     for (auto& sensor : _sensors)
     {
         auto value = speed;
-        util::SDBusPlus::setProperty<uint64_t>(
-                _bus,
-                sensor.second,
-                sensor.first,
-                _interface,
-                FAN_TARGET_PROPERTY,
-                std::move(value));
+        try
+        {
+            util::SDBusPlus::setProperty<uint64_t>(
+                    _bus,
+                    sensor.second,
+                    sensor.first,
+                    _interface,
+                    FAN_TARGET_PROPERTY,
+                    std::move(value));
+        }
+        catch (const sdbusplus::exception::SdBusError&)
+        {
+            throw util::DBusPropertyError{
+                    "DBus set property failed",
+                    sensor.second,
+                    sensor.first,
+                    _interface,
+                    FAN_TARGET_PROPERTY};
+        }
     }
 
     _targetSpeed = speed;
diff --git a/control/functor.hpp b/control/functor.hpp
index 17ae3af..e86bae7 100644
--- a/control/functor.hpp
+++ b/control/functor.hpp
@@ -113,7 +113,12 @@
                                                            _property);
                 _handler(zone, std::forward<T>(val));
             }
-            catch (const util::DBusError& e)
+            catch (const sdbusplus::exception::SdBusError&)
+            {
+                // Property will not be used unless a property changed
+                // signal message is received for this property.
+            }
+            catch (const util::DBusError&)
             {
                 // Property will not be used unless a property changed
                 // signal message is received for this property.
diff --git a/sdbusplus.hpp b/sdbusplus.hpp
index 3a6cd65..41c7fe2 100644
--- a/sdbusplus.hpp
+++ b/sdbusplus.hpp
@@ -149,14 +149,19 @@
                     interface.c_str(),
                     method.c_str());
             reqMsg.append(std::forward<Args>(args)...);
-            auto respMsg = bus.call(reqMsg);
-
-            if (respMsg.is_method_error())
+            try
+            {
+                auto respMsg = bus.call(reqMsg);
+                if (respMsg.is_method_error())
+                {
+                    throw DBusMethodError{busName, path, interface, method};
+                }
+                return respMsg;
+            }
+            catch (const sdbusplus::exception::SdBusError&)
             {
                 throw DBusMethodError{busName, path, interface, method};
             }
-
-            return respMsg;
         }
 
         /** @brief Invoke a method. */
