4

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.

Community
  • 1
  • 1
Manijak
  • 51
  • 4

3 Answers3

0

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"/>
0

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.

Ümit
  • 17,379
  • 7
  • 55
  • 74
0

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");
Knarf
  • 2,077
  • 1
  • 16
  • 24