在生产模式下的gwt项目中,我们会将未捕获的异常及其堆栈跟踪发送到服务器。但是有时我们会收到一个没有堆栈跟踪的JsExceptions,只有java.lang.JsException。那是什么?我应该怎么做才能知道错误发生在哪里?谢谢。
答案 0 :(得分:3)
这表明发生了一些普通的JS错误,GWT无法以有意义的方式进行翻译(正确包装了最近的GWT中的“空指针”,或者通过其他一些被包装为JavaScriptException
的api) 。通常,此调试应像其他JS异常一样进行-使用浏览器的调试工具检查发生了什么以及为什么。
遇到这种情况的一些不太常见的方法可能包括错误地显示页面上的其他JS脚本,可能更改/替换浏览器API或用户安装其他扩展程序来更改浏览器API的功能。
使用浏览器的调试器的“暂停已捕获和未捕获的异常”功能来检查在这种情况下会发生什么,或者检查JsException的backingJsObject
字段或getStackTrace()
返回值中的堆栈跟踪。如果不存在,则可能意味着浏览器太旧而无法捕获(并且在GWT中禁用了模拟堆栈跟踪或旧式堆栈跟踪功能),或者底层JS对象根本没有堆栈跟踪因为某些原因。