diff --git a/common/utils.hpp b/common/utils.hpp
index 101fd49..5bc99cd 100644
--- a/common/utils.hpp
+++ b/common/utils.hpp
@@ -190,7 +190,7 @@
      *
      *  @return std::string - the dbus service name
      *
-     *  @throw sdbusplus::exception::SdBusError when it fails
+     *  @throw sdbusplus::exception::exception when it fails
      */
     std::string getService(const char* path,
                            const char* interface) const override;
@@ -203,7 +203,7 @@
      *
      *  @return The value of the property(type: variant)
      *
-     *  @throw sdbusplus::exception::SdBusError when it fails
+     *  @throw sdbusplus::exception::exception when it fails
      */
     PropertyValue
         getDbusPropertyVariant(const char* objPath, const char* dbusProp,
@@ -220,7 +220,7 @@
      *
      *  @return The value of the property
      *
-     *  @throw sdbusplus::exception::SdBusError when dbus request fails
+     *  @throw sdbusplus::exception::exception when dbus request fails
      *         std::bad_variant_access when \p Property and property on dbus do
      *         not match
      */
@@ -239,7 +239,7 @@
      *                       type for the D-Bus object
      *  @param[in] value - The value to be set
      *
-     *  @throw sdbusplus::exception::SdBusError when it fails
+     *  @throw sdbusplus::exception::exception when it fails
      */
     void setDbusProperty(const DBusMapping& dBusMap,
                          const PropertyValue& value) const override;
diff --git a/host-bmc/dbus_to_host_effecters.cpp b/host-bmc/dbus_to_host_effecters.cpp
index ff74788..2ed96c0 100644
--- a/host-bmc/dbus_to_host_effecters.cpp
+++ b/host-bmc/dbus_to_host_effecters.cpp
@@ -173,7 +173,7 @@
             return;
         }
     }
-    catch (const sdbusplus::exception::SdBusError& e)
+    catch (const sdbusplus::exception::exception& e)
     {
         std::cerr << "Error in getting current host state. Will still "
                      "continue to set the host effecter \n";
diff --git a/libpldmresponder/bios.cpp b/libpldmresponder/bios.cpp
index 221a62b..74000b8 100644
--- a/libpldmresponder/bios.cpp
+++ b/libpldmresponder/bios.cpp
@@ -125,7 +125,7 @@
         timeUsec = pldm::utils::DBusHandler().getDbusProperty<EpochTimeUS>(
             bmcTimePath, "Elapsed", timeInterface);
     }
-    catch (const sdbusplus::exception::SdBusError& e)
+    catch (const sdbusplus::exception::exception& e)
     {
         std::cerr << "Error getting time, PATH=" << bmcTimePath
                   << " TIME INTERACE=" << timeInterface << "\n";
diff --git a/oem/ibm/libpldmresponder/inband_code_update.cpp b/oem/ibm/libpldmresponder/inband_code_update.cpp
index fe7fde0..c474c25 100644
--- a/oem/ibm/libpldmresponder/inband_code_update.cpp
+++ b/oem/ibm/libpldmresponder/inband_code_update.cpp
@@ -306,7 +306,7 @@
                             break;
                         }
                     }
-                    catch (const sdbusplus::exception::SdBusError& e)
+                    catch (const sdbusplus::exception::exception& e)
                     {
                         std::cerr << "Error in getting Activation status \n";
                     }
diff --git a/oem/ibm/libpldmresponder/platform_oem_ibm.cpp b/oem/ibm/libpldmresponder/platform_oem_ibm.cpp
index a8d070e..5497bfc 100644
--- a/oem/ibm/libpldmresponder/platform_oem_ibm.cpp
+++ b/oem/ibm/libpldmresponder/platform_oem_ibm.cpp
@@ -40,7 +40,7 @@
             return PLDM_SUCCESS;
         }
     }
-    catch (const sdbusplus::exception::SdBusError& e)
+    catch (const sdbusplus::exception::exception& e)
     {
         std::cerr << "Error in getting current host state, continue ... \n";
     }
diff --git a/softoff/softoff.cpp b/softoff/softoff.cpp
index 2091fca..9819931 100644
--- a/softoff/softoff.cpp
+++ b/softoff/softoff.cpp
@@ -27,8 +27,6 @@
 using Clock = Clock<clockId>;
 using Timer = Time<clockId>;
 
-using sdbusplus::exception::SdBusError;
-
 constexpr pldm::pdr::TerminusID TID = 0; // TID will be implemented later.
 namespace sdbusRule = sdbusplus::bus::match::rules;
 
@@ -164,7 +162,7 @@
             VMMPdrExist = false;
         }
     }
-    catch (const SdBusError& e)
+    catch (const sdbusplus::exception::exception& e)
     {
         std::cerr << "PLDM soft off: Error get VMM PDR,ERROR=" << e.what()
                   << "\n";
@@ -208,7 +206,7 @@
             effecterID = sysFwPdr->effecter_id;
         }
     }
-    catch (const SdBusError& e)
+    catch (const sdbusplus::exception::exception& e)
     {
         std::cerr << "PLDM soft off: Error get system firmware PDR,ERROR="
                   << e.what() << "\n";
@@ -286,7 +284,7 @@
                 possibleStateSize + sizeof(setId) + sizeof(possibleStateSize);
         }
     }
-    catch (const SdBusError& e)
+    catch (const sdbusplus::exception::exception& e)
     {
         std::cerr << "PLDM soft off: Error get State Sensor PDR,ERROR="
                   << e.what() << "\n";
@@ -317,7 +315,7 @@
 
         ResponseMsg.read(instanceID);
     }
-    catch (const SdBusError& e)
+    catch (const sdbusplus::exception::exception& e)
     {
         std::cerr << "PLDM soft off: Error get instanceID,ERROR=" << e.what()
                   << "\n";
