diff --git a/core_manager.cpp b/core_manager.cpp
index 753a26b..a62c89c 100644
--- a/core_manager.cpp
+++ b/core_manager.cpp
@@ -64,24 +64,17 @@
                                     MAPPER_INTERFACE, "GetObject");
     mapper.append(OBJ_INTERNAL, vector<string>({IFACE_INTERNAL}));
 
-    auto mapperResponseMsg = b.call(mapper);
-    if (mapperResponseMsg.is_method_error())
-    {
-        log<level::ERR>("Error in mapper call");
-        return;
-    }
-
     map<string, vector<string>> mapperResponse;
     try
     {
+        auto mapperResponseMsg = b.call(mapper);
         mapperResponseMsg.read(mapperResponse);
     }
     catch (const sdbusplus::exception::SdBusError& e)
     {
-        log<level::ERR>(fmt::format("Failed to parse dump create message, "
-                                    "errormsg({}), REPLY_SIG({})",
-                                    e.what(), mapperResponseMsg.get_signature())
-                            .c_str());
+        log<level::ERR>(
+            fmt::format("Failed to GetObject on Dump.Internal: {}", e.what())
+                .c_str());
         return;
     }
     if (mapperResponse.empty())
@@ -94,7 +87,15 @@
     auto m =
         b.new_method_call(host.c_str(), OBJ_INTERNAL, IFACE_INTERNAL, "Create");
     m.append(APPLICATION_CORED, files);
-    b.call_noreply(m);
+    try
+    {
+        b.call_noreply(m);
+    }
+    catch (const sdbusplus::exception::SdBusError& e)
+    {
+        log<level::ERR>(
+            fmt::format("Failed to create dump: {}", e.what()).c_str());
+    }
 }
 
 } // namespace core
