Trap unchecked exceptions thrown by generators.
Patch by: cromwellian
Review by: me
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@3598 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/cfg/RuleGenerateWith.java b/dev/core/src/com/google/gwt/dev/cfg/RuleGenerateWith.java
index de4158a..2f97c36 100644
--- a/dev/core/src/com/google/gwt/dev/cfg/RuleGenerateWith.java
+++ b/dev/core/src/com/google/gwt/dev/cfg/RuleGenerateWith.java
@@ -45,19 +45,26 @@
}
long before = System.currentTimeMillis();
- String className = generator.generate(logger, context, typeName);
- long after = System.currentTimeMillis();
- if (className == null) {
- msg = "Generator returned null, so the requested type will be used as is";
- } else {
- msg = "Generator returned class '" + className + "'";
+ try {
+ String className = generator.generate(logger, context, typeName);
+ long after = System.currentTimeMillis();
+ if (className == null) {
+ msg = "Generator returned null, so the requested type will be used as is";
+ } else {
+ msg = "Generator returned class '" + className + "'";
+ }
+ logger.log(TreeLogger.DEBUG, msg, null);
+
+ msg = "Finished in " + (after - before) + " ms";
+ logger.log(TreeLogger.DEBUG, msg, null);
+
+ return className;
+ } catch (RuntimeException e) {
+ logger.log(TreeLogger.ERROR, "Generator '"
+ + generator.getClass().getName()
+ + "' threw threw an exception while rebinding '" + typeName + "'", e);
+ throw new UnableToCompleteException();
}
- logger.log(TreeLogger.DEBUG, msg, null);
-
- msg = "Finished in " + (after - before) + " ms";
- logger.log(TreeLogger.DEBUG, msg, null);
-
- return className;
}
public String toString() {