hothd: Fix payload_update crash on error

Avoid payload_upload tool crash on underlying errors
by graceful exit.

Tested:
root@uycyv5-nfd01:~# coredumpctl
No coredumps found.

root@uycyv5-nfd01:~# payload_update -i ***_ioc_4_3 update /tmp/d1_injected_sas4024fw.img  -r -m 1
Failed to get SPS passthrough status: sd_bus_call: org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable
Target did not report SPS passthrough disabled. Attempting reset
***_ioc_4_3: Put target in reset
terminate called after throwing an instance of 'sdbusplus::exception::SdBusError'
  what():  sd_bus_call: org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable
Aborted (core dumped)

root@uycyv5-nfd01:~# coredumpctl
TIME                         PID UID GID SIG     COREFILE EXE                      SIZE
Wed 2025-01-08 13:11:29 PST 5572   0   0 SIGABRT present  /usr/bin/payload_update 64.7K

root@uycyv5-nfd01:~# /tmp/payload_update -i ***_ioc_4_3 update /tmp/d1_injected_sas4024fw.img  -r -m 1
Failed to get SPS passthrough status: sd_bus_call: org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable
Target did not report SPS passthrough disabled. Attempting reset
***_ioc_4_3: Put target in reset
Failed to execute command: sd_bus_call: org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable

root@uycyv5-nfd01:~# coredumpctl
TIME                         PID UID GID SIG     COREFILE EXE                      SIZE
Wed 2025-01-08 13:11:29 PST 5572   0   0 SIGABRT present  /usr/bin/payload_update 64.7K
root@uycyv5-nfd01:~#

Google-Bug-Id: 361460251
Change-Id: Ifab3ffadc8fcb318f9abd4bafd457e4cf4c95e98
Signed-off-by: Konda Reddy Kachana <kkachana@google.com>
diff --git a/tools/payload_update_main.cpp b/tools/payload_update_main.cpp
index ba094d1..40160b7 100644
--- a/tools/payload_update_main.cpp
+++ b/tools/payload_update_main.cpp
@@ -32,10 +32,20 @@
     {
         return EXIT_FAILURE;
     }
-    if (!cli.execute())
+
+    try {
+        if (!cli.execute())
+        {
+            std::cerr << argv[0] << ": Failed to execute command!" << '\n';
+            return EXIT_FAILURE;
+        }
+    }
+    catch (const std::exception& e)
     {
-        std::cerr << argv[0] << ": Failed to execute command!" << '\n';
+        std::cerr << "Failed to execute command: " << e.what()
+                    << '\n';
         return EXIT_FAILURE;
     }
+
     return EXIT_SUCCESS;
 }