Forward desugar worker errors into the WorkResponse and prevent bringing desugar workers down in the event of a crash.

Addresses kmb@'s post-submit comments in https://github.com/bazelbuild/bazel/commit/82df64dee36337c9aba78dce3d7ce8c6cf4ea30f

RELNOTES: None
PiperOrigin-RevId: 252109687
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/Desugar.java b/src/tools/android/java/com/google/devtools/build/android/desugar/Desugar.java
index e83a6ca..a51aff6 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/Desugar.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/Desugar.java
@@ -983,7 +983,7 @@
     if (options.persistentWorker) {
       runPersistentWorker(dumpDirectory);
     } else {
-      processRequest(options, dumpDirectory);
+      System.exit(processRequest(options, dumpDirectory));
     }
   }
 
@@ -1000,8 +1000,17 @@
 
       DesugarOptions options = parseCommandLineOptions(argList);
 
-      int exitCode = processRequest(options, dumpDirectory);
-      WorkResponse.newBuilder().setExitCode(exitCode).build().writeDelimitedTo(System.out);
+      try {
+        processRequest(options, dumpDirectory);
+        WorkResponse.newBuilder().setExitCode(0).build().writeDelimitedTo(System.out);
+      } catch (Exception e) {
+        e.printStackTrace();
+        WorkResponse.newBuilder()
+            .setExitCode(1)
+            .setOutput(e.getMessage())
+            .build()
+            .writeDelimitedTo(System.out);
+      }
       System.out.flush();
     }
   }