diff options
author | Liam Miller-Cushon <cushon@google.com> | 2017-01-13 18:29:07 +0000 |
---|---|---|
committer | Vladimir Moskva <vladmos@google.com> | 2017-01-16 13:44:42 +0000 |
commit | 178a7a3b328e85bd48598276a793c9a3c08adc3a (patch) | |
tree | bb405cef661e7e8b7d5413ac135a802e26727744 | |
parent | 0afc044a717763ed3123e0dbc5296c4cb2f5d443 (diff) |
Handle top-level exceptions in javac
javac's main catches all exceptions and returns an exit code, the API does not.
This restores error handling that was lost when we migrated to the API in
commit 3c5e55ff8e058b624ce26e803ff00434c70d4b91.
--
PiperOrigin-RevId: 144457176
MOS_MIGRATED_REVID=144457176
-rw-r--r-- | src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java | 51 |
1 files changed, 26 insertions, 25 deletions
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java index 77c8495290..a4b5dc9f13 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java @@ -120,33 +120,34 @@ public class BlazeJavacMain { setupBlazeJavaCompiler(context); Result result = Result.ABNORMAL; + JavacTool tool = JavacTool.create(); + JavacTaskImpl task = + (JavacTaskImpl) + tool.getTask( + errOutput, + fileManager, + diagnosticListener, + javacArguments, + ImmutableList.<String>of() /*classes*/, + fileManager.getJavaFileObjectsFromPaths(arguments.sourceFiles()), + context); + if (arguments.processors() != null) { + task.setProcessors(arguments.processors()); + } + fileManager.setContext(context); + setLocations(fileManager, arguments); try { - JavacTool tool = JavacTool.create(); - JavacTaskImpl task = - (JavacTaskImpl) - tool.getTask( - errOutput, - fileManager, - diagnosticListener, - javacArguments, - ImmutableList.<String>of() /*classes*/, - fileManager.getJavaFileObjectsFromPaths(arguments.sourceFiles()), - context); - if (arguments.processors() != null) { - task.setProcessors(arguments.processors()); - } - fileManager.setContext(context); - setLocations(fileManager, arguments); - result = task.doCall(); - } catch (PropagatedException e) { - if (e.getCause() instanceof PluginException) { - PluginException pluginException = (PluginException) e.getCause(); - errOutput.println(pluginException.getMessage()); - result = pluginException.getResult(); - } else { - e.printStackTrace(errOutput); - result = Result.ABNORMAL; + try { + result = task.doCall(); + } catch (PropagatedException e) { + throw e.getCause(); } + } catch (PluginException e) { + errOutput.println(e.getMessage()); + result = e.getResult(); + } catch (Throwable t) { + t.printStackTrace(errOutput); + result = Result.ABNORMAL; } finally { if (result.isOK()) { verifyNotNull(compiler); |