在开发过程中忽略netscape.javascript.JSException
Eclipse允许您使用sun.applet.AppletViewer调试小程序。它将实际启动小程序,运行它并模拟完整的浏览器运行时。如果小程序中有javascript操作代码,这将导致JSException,因为当前上下文不是真正启用JS的引擎 你将如何解决这个问题?我可以看到几个可能的路径:在开发过程中忽略netscape.javascript.JSException,javascript,eclipse,applet,word-wrap,appletviewer,Javascript,Eclipse,Applet,Word Wrap,Appletviewer,Eclipse允许您使用sun.applet.AppletViewer调试小程序。它将实际启动小程序,运行它并模拟完整的浏览器运行时。如果小程序中有javascript操作代码,这将导致JSException,因为当前上下文不是真正启用JS的引擎 你将如何解决这个问题?我可以看到几个可能的路径: 将异常包装在try{}catch()中并忽略它-这不是一个好的做法 Pass和environment标志,告诉代码我们当前处于调试模式,这样它就不会尝试执行JS代码-OK,但需要每个开发人员手动干预 如
谢谢你的想法。这不是一个自动防故障的解决方案,而是我设法想出的一个可行的解决方案:
private void notifySelectionState(){
JSObject jsObject = null;
try {
jsObject = JSObject.getWindow(applet);
// An exception can be thrown here (hopefully) only is running in debug environment...
} catch (JSException e) {
// So actually what I'm doing here is checking (in a very lame fashion) for if I'm in a the browser
// content or in the AppletViewer
}
if (jsObject != null) {
jsObject.call(...);
}
}
这不是一个自动防故障的解决方案,而是我设法想出的一个可行的解决方案:
private void notifySelectionState(){
JSObject jsObject = null;
try {
jsObject = JSObject.getWindow(applet);
// An exception can be thrown here (hopefully) only is running in debug environment...
} catch (JSException e) {
// So actually what I'm doing here is checking (in a very lame fashion) for if I'm in a the browser
// content or in the AppletViewer
}
if (jsObject != null) {
jsObject.call(...);
}
}
在某些较旧的浏览器上,JSObject将抛出一般的RuntimeException而不是JSException。因此,您可能希望将网络扩大一点,并在包装器中留下好的注释。在某些较旧的浏览器上,JSObject将抛出通用运行时异常,而不是JSException。所以你可能想把网撒得更宽一点,在包装纸上留下好的评论