j2objc_dead_code_pruner.py: Improve the message of the exception raised when subprocess.check_output() fails in PruneArchiveFile().

Before this change, if check_output() raised OSError it would not contain information about the command that was attempted to be executed, adding to difficulty diagnosing the root cause of such an OSError.  With this change, the exception's message will include the command that was executed.

RELNOTES: None
PiperOrigin-RevId: 232294150
diff --git a/tools/objc/j2objc_dead_code_pruner.py b/tools/objc/j2objc_dead_code_pruner.py
index 1ec9f95..f386206 100755
--- a/tools/objc/j2objc_dead_code_pruner.py
+++ b/tools/objc/j2objc_dead_code_pruner.py
@@ -399,8 +399,12 @@
     j2objc_cmd = 'cp %s %s' % (pipes.quote(input_archive),
                                pipes.quote(output_archive))
 
-  subprocess.check_output(
-      j2objc_cmd, stderr=subprocess.STDOUT, shell=True, env=cmd_env)
+  try:
+    subprocess.check_output(
+        j2objc_cmd, stderr=subprocess.STDOUT, shell=True, env=cmd_env)
+  except OSError as e:
+    raise Exception(
+        'executing command failed: %s (%s)' % (j2objc_cmd, e.strerror))
 
   # "Touch" the output file.
   # Prevents a pre-Xcode-8 bug in which passing zero-date archive files to ld