2015-09-14 43 views
0

我在我的GWT中得到了一個N​​oSuchElementException,我不知道它來自哪裏。在編譯的GWT中調試異常?

我已經探索了很多關於如何獲取GWT中的異常堆棧跟蹤的提示,但沒有任何工作。我的解決方案如下(雖然我歡迎任何更簡單的方法!)

回答

0

注意:我使用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的名稱。