I just migrated from GWT 2.5.1 to 2.7 and first time using SuperDev Mode. I have enabled "JavaScript source maps" in Chrome dev tools. In Chrome Console exception looks like this:
com.google.gwt.event.shared.UmbrellaException: Exception caught: For input string: "a"
at fillInStackTrace_0_g$
at Throwable_3_g$
at Exception_3_g$
at RuntimeException_3_g$
at UmbrellaException_3_g$
at UmbrellaException_5_g$
at fireEvent_1_g$
at fireEvent_3_g$
at fireNativeEvent_1_g$
at onBrowserEvent_2_g$
at dispatchEventImpl_0_g$
at dispatchEvent_4_g$
at dispatchEvent_6_g$
at apply_0_g$
at entry0_0_g$
at <anonymous>
Caused by: java.lang.NumberFormatException: For input string: "a"
at fillInStackTrace_0_g$
at Throwable_2_g$
at Exception_2_g$
at RuntimeException_2_g$
at IllegalArgumentException_2_g$
at NumberFormatException_2_g$
at forInputString_0_g$
at __parseAndValidateDouble_0_g$
at parseDouble_0_g$
at Double_2_g$
at valueOf_68_g$
at onClick_109_g$
at dispatch_6_g$
at dispatch_7_g$
at dispatch_1_g$
at dispatchEvent_2_g$
at doFire_0_g$
at fireEvent_2_g$
at fireEvent_1_g$
at fireEvent_3_g$
at fireNativeEvent_1_g$
at onBrowserEvent_2_g$
at dispatchEventImpl_0_g$
at dispatchEvent_4_g$
at dispatchEvent_6_g$
at apply_0_g$
at entry0_0_g$
at <anonymous>
OnModuleLoad I am cacthing exceptions:
GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() {
@Override
public void onUncaughtException(Throwable e) {
GWT.log(e);
}
});
How can I get stackTrace? I tried something like this https://stackoverflow.com/a/24334132/1660637 but couldn't manage to work.
Did you try adding these into your gwt.xml file?
<set-property name="compiler.stackMode" value="emulated"/>
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers" value="true"/>
<set-configuration-property name="compiler.emulatedStack.recordFileNames" value="true"/>
There is an open issue for SuperDevMode, stacktraces and the use of GWT.log
. Also there seem to be improvements in GWT 2.8.
As far as I know if you use the normal java.util.logging
instead of GWT.log
you should get stack traces in SDM.
Call the below method from your onModuleLoad. Note that you must use java.util.Logging for this to work. GWT.log does not work correctly for exceptions.
/** * Set an uncaught exception handler that unwraps the exception * (UmbrellaException) for SuperDevMode. */ private void setUncaughtExceptionHandler() { GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() { @Override public void onUncaughtException(Throwable e) { Throwable unwrapped = unwrap(e); BootBox.error(I18NMessages.getMessage(3774) + "\\n\\n" + unwrapped); LOGGER.log(Level.EXCEPTION, "onUncaughtException " + e.getMessage(), unwrapped); }
public Throwable unwrap(Throwable e)
{
if (e instanceof UmbrellaException)
{
UmbrellaException ue = (UmbrellaException) e;
if (ue.getCauses().size() == 1)
{
return unwrap(ue.getCauses().iterator().next());
}
}
return e;
}
});
}
And the LOGGER is create in the following way
public static final Logger LOGGER = Logger.getLogger("Something");
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.