在开发过程中忽略netscape.javascript.JSException

在开发过程中忽略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,但需要每个开发人员手动干预 如

Eclipse允许您使用sun.applet.AppletViewer调试小程序。它将实际启动小程序,运行它并模拟完整的浏览器运行时。如果小程序中有javascript操作代码,这将导致JSException,因为当前上下文不是真正启用JS的引擎

你将如何解决这个问题?我可以看到几个可能的路径:

  • 将异常包装在try{}catch()中并忽略它-这不是一个好的做法
  • Pass和environment标志,告诉代码我们当前处于调试模式,这样它就不会尝试执行JS代码-OK,但需要每个开发人员手动干预
  • 如何识别当前上下文不是浏览器
  • 找到另一个可以模拟完整浏览器行为(包括JS)的AppletViewer-有吗
  • 更多

  • 谢谢你的想法。

    这不是一个自动防故障的解决方案,而是我设法想出的一个可行的解决方案:

    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。所以你可能想把网撒得更宽一点,在包装纸上留下好的评论