I think the current state of client side exception logging is as follows
(using GWT 2.8.0-SNAPSHOT):
1) You do not inherit Logging.gwt.xml nor LoggingDisabled.gwt.xml:
a) You do not install a GWT.setUncaughtExceptionHandler()
=> Exceptions escape to the browser and Chrome console shows them
with clickable links on the right side pointing to the source mapped Java
file and the correct line number. *However, if the java exception has a
cause chain you will not see that cause chain at all in the console. That
is really annoying because often you just see the stack of some GWT
internal code because exception has been caught by GWT (e.g.
UmbrellaException) which basically hides the real cause.*
b) You do install a GWT.setUncaughtExceptionHandler() and use
GWT.log() or java.util.Logger.log() to print the exception
=> GWT.log(): will print the exception message, followed by the
exception cause chain and finally a native exception stack trace. The
exception cause chain is a manually build String and logged as String so
you can not click anything in that cause chain in the console. Since method
names are obfuscated it doesn't help a lot. The only thing you can click is
the native stack trace but that contains the stack to the location where
you logged the exception and not the stack of the exception itself (usually
points to the GWT.log() call in the UncaughtExeptionHandler)
=> Logger.getLogger().log(): Will not print out anything because
for some weird reason Logger will always be rebound to LoggerImplNull. *This
does look like a bug because LogImpl.gwt.xml indicates that Logger should
work if superdevmode = on is given*.
2.) You do inherit Logging.gwt.xml
If you do not install a UncaughtExceptionHandler yourself, then GWT will
now install one for you which calls Logger to log exceptions. The situation
is now similar to 1b) except that the output format looks a bit different.
You see the exception message, the cause chain rendered as String (and thus
not clickable) and a clickable, native stack trace that usually points to
Impl -> Logger -> ConsoleLogHandler which does not give you anything.
So in general the situation kind of sucks right now. What I usually do
right now is to tell Chrome to stop on any caught / uncaught exception and
then click "continue" in the debugger until Chrome stops at the exception
that I need to fix. That way I don't have to search through obfuscated
method names.
-- J.
--
You received this message because you are subscribed to the Google Groups "GWT
Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/google-web-toolkit-contributors/75f8ada8-05b1-451b-a548-10d837ed0c55%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.