我在GWT中遇到NoSuchElementException,我不知道它来自哪里。
我已经探讨了很多关于如何在GWT中获取异常堆栈跟踪的提示,但没有任何工作。我的解决方案如下(尽管我欢迎任何更简单的方法!)
答案 0 :(得分:0)
注意:我在OS X Yosemite上运行chrome版本45.0.2454.85(64位),使用GWT 2.7.0。我不知道这是否适用于其他任何事情。
我的解决方案最终是将这段代码放在我的onModuleLoad函数的开头:
native void openDebuggerWhenExceptionsCreated() /*-{
window['captureStackTrace'] = function(throwable, reference) {
debugger;
};
}-*/;
public void onModuleLoad() {
openDebuggerWhenExceptionsCreated();
...
然后在编译的javascript模式下运行(使用-style PRETTY),在chrome中打开应用程序,打开控制台(对我来说是mac,命令+选项+ i),然后重现错误。如果它命中调试器;语句在控制台打开时,然后chrome的调试器就会中断。
这是有效的,因为当GWT创建异常时,它会调用captureStackTrace()函数,我们在此处替换它。对我来说,如果它什么也不做,为什么这个功能存在仍然是一个谜,但不管怎样,覆盖它似乎是安全的。
需要window['captureStackTrace']
而不仅仅是captureStackTrace
,因为如果GWT看到我们使用该名称的变量,GWT实际上会更改其自己的captureStackTrace的名称。