Tolerate missing sensors on startup

Instead of crashing if one of the sensors listed in the symbol table
isn't on D-Bus yet, return quiet_NaN for its value instead.  A quiet_NaN
is what most of the sensor applications (all of the dbus-sensors ones)
return anyway when they are not able to read the device, and this can be
considered similar to that - that the device isn't accessible yet.

This eases the dependencies necessary in the service file, as the
service file as it stands now doesn't wait for any sensor providing
services to start, and even if it did different virtual sensors could
require different dependencies.

An alternative would be to have the code not even put the virtual sensor
on D-Bus until all of its required sensors are available, but that adds
quite a bit of complexity when usually there will just be a small window
after a reboot when the services area all starting up that this would
occur.

Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: Ifc9b010774fa1a703ff660abe57c57220cc907b3
diff --git a/dbusUtils.hpp b/dbusUtils.hpp
index a12a21d..7f6f3f3 100644
--- a/dbusUtils.hpp
+++ b/dbusUtils.hpp
@@ -40,13 +40,19 @@
     }
     catch (const sdbusplus::exception::SdBusError& ex)
     {
-        log<level::ERR>("ObjectMapper call failure",
-                        entry("WHAT=%s", ex.what()));
+        if (ex.name() == std::string(sdbusplus::xyz::openbmc_project::Common::
+                                         Error::ResourceNotFound::errName))
+        {
+            // The service isn't on D-Bus yet.
+            return std::string{};
+        }
+
         throw;
     }
 
     if (resp.begin() == resp.end())
     {
+        // Shouldn't happen, if the mapper can't find it it is handled above.
         throw std::runtime_error("Unable to find Object: " + path);
     }