diff --git a/redfish-core/lib/power_supply.hpp b/redfish-core/lib/power_supply.hpp
index 09093a3..7316b5f 100644
--- a/redfish-core/lib/power_supply.hpp
+++ b/redfish-core/lib/power_supply.hpp
@@ -71,6 +71,12 @@
 {
     if (ec)
     {
+        if (ec.value() == boost::system::errc::io_error)
+        {
+            BMCWEB_LOG_WARNING("Chassis not found");
+            messages::resourceNotFound(asyncResp->res, "Chassis", chassisId);
+            return;
+        }
         if (ec.value() != EBADR)
         {
             BMCWEB_LOG_ERROR("DBUS response error{}", ec.value());
@@ -110,6 +116,7 @@
          chassisId](const std::optional<std::string>& validChassisPath) {
             if (!validChassisPath)
             {
+                BMCWEB_LOG_WARNING("Chassis not found");
                 messages::resourceNotFound(asyncResp->res, "Chassis",
                                            chassisId);
                 return;
@@ -164,11 +171,19 @@
 {
     if (ec)
     {
+        if (ec.value() == boost::system::errc::io_error)
+        {
+            // Not found
+            callback(std::string(), std::string());
+            return;
+        }
         if (ec.value() != EBADR)
         {
             BMCWEB_LOG_ERROR("DBUS response error{}", ec.value());
             messages::internalError(asyncResp->res);
+            return;
         }
+        callback(std::string(), std::string());
         return;
     }
     for (const auto& [objectPath, service] : subtree)
@@ -463,6 +478,14 @@
     const std::string& chassisId, const std::string& powerSupplyId,
     const std::string& powerSupplyPath, const std::string& service)
 {
+    if (powerSupplyPath.empty() || service.empty())
+    {
+        BMCWEB_LOG_WARNING("PowerSupply not found");
+        messages::resourceNotFound(asyncResp->res, "PowerSupply",
+                                   powerSupplyId);
+        return;
+    }
+
     asyncResp->res.addHeader(
         boost::beast::http::field::link,
         "</redfish/v1/JsonSchemas/PowerSupply/PowerSupply.json>; rel=describedby");
@@ -497,7 +520,15 @@
     // Get the correct Path and Service that match the input parameters
     getValidPowerSupplyPath(
         asyncResp, chassisId, powerSupplyId,
-        [asyncResp](const std::string&, const std::string&) {
+        [asyncResp, powerSupplyId](const std::string& powerSupplyPath,
+                                   const std::string& service) {
+            if (powerSupplyPath.empty() || service.empty())
+            {
+                BMCWEB_LOG_WARNING("PowerSupply not found");
+                messages::resourceNotFound(asyncResp->res, "PowerSupply",
+                                           powerSupplyId);
+                return;
+            }
             asyncResp->res.addHeader(
                 boost::beast::http::field::link,
                 "</redfish/v1/JsonSchemas/PowerSupply/PowerSupply.json>; rel=describedby");
