2012-10-24 28 views
0

沒有行號我增加了一個UncaughtExceptionHandler的用下面的代碼:在StackTraceElement的

 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或類名稱未知。

我在想我是否做錯了什麼?

回答

1

,此信息可能GWT應用程序執行過程中只是不可用。檢查覈心StackTraceElement.java班,方法toString()。只有當> =零時纔打印出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

嘗試設置這在您的模塊文件

<set-property name="compiler.stackMode" value="emulated" /> 
+0

感謝您的信息!不知道這個功能。 – alexp

+0

不幸的是它沒有工作。所有行號仍然是-1 –

相關問題