我在我的GWT中得到了一個NoSuchElementException,我不知道它來自哪裏。在編譯的GWT中調試異常?
我已經探索了很多關於如何獲取GWT中的異常堆棧跟蹤的提示,但沒有任何工作。我的解決方案如下(雖然我歡迎任何更簡單的方法!)
我在我的GWT中得到了一個NoSuchElementException,我不知道它來自哪裏。在編譯的GWT中調試異常?
我已經探索了很多關於如何獲取GWT中的異常堆棧跟蹤的提示,但沒有任何工作。我的解決方案如下(雖然我歡迎任何更簡單的方法!)
注意:我使用GWT 2.7.0在OS X Yosemite上運行chrome版本45.0.2454.85(64位)。我不知道這是否適用於其他任何事情。
我的解決辦法,最終在把這個代碼,在我的onModuleLoad函數的開頭:
native void openDebuggerWhenExceptionsCreated() /*-{
window['captureStackTrace'] = function(throwable, reference) {
debugger;
};
}-*/;
public void onModuleLoad() {
openDebuggerWhenExceptionsCreated();
...
然後編譯JavaScript的模式下運行(與風格的美麗的),打開應用程序在Chrome中,開啓控制檯(對於我在Mac上,命令+選項+我),然後重現錯誤。如果它碰到調試器;陳述而控制檯打開然後chrome的調試器將在那裏打破。
這是有效的,因爲當GWT創建一個異常時,它會調用captureStackTrace()函數,我們在這裏將其替換。對於我來說,如果這個功能無效,它仍然是一個謎,但無論如何,重寫它似乎是安全的。
需要window['captureStackTrace']
而不僅僅是captureStackTrace
,因爲如果GWT通過該名稱使用變量來看到我們實際上更改了它自己的captureStackTrace的名稱。