我添加了一个带有以下代码的UncaughtExceptionHandler:
GWT.setUncaughtExceptionHandler(new
GWT.UncaughtExceptionHandler() {
public void onUncaughtException(Throwable e) {
StackTraceElement[] elements = e.getStackTrace();
String stackTrace = "";
for (int i = 0; i < elements.length; i++)
{
stackTrace += elements[i] + "\n";
}
PlatformServices.instance().log().debug("caught unhandled exception: " + e + " ; Stack:\n" + stackTrace);
}
});
问题是只有每个StackTraceElement的函数名有效。所有其他信息都是默认的,例如,行号为-1,类名称为未知。
我想知道我做错了什么?
答案 0 :(得分:2)
此信息可能在GWT应用执行期间不可用。检查核心StackTraceElement.java
类,方法toString()
。仅在{> 1}的情况下打印出lineNumber
的值。而且它可能是负面的并非不可能。
我对UncaughtExceptionHandler
的测试给了我完全相同的结果(在运行时没有引用行号)。在混淆模式下编译时,我甚至无法获取文件名,因此输出看起来像:
com.google.gwt.core.client.JavaScriptException: (TypeError): Cannot read property 'g' of null
Unknown.iPb(Unknown Source)
Unknown.gPb(Unknown Source)
Unknown.npd(Unknown Source)
...
不是真正的解决方案,但至少你并不孤单:)。
答案 1 :(得分:1)
尝试在模块文件
中设置此项<set-property name="compiler.stackMode" value="emulated" />