选择权;SetThroweExceptionOnScriptorror(false)";不要在它里面工作!为什么?(爪哇)

选择权;SetThroweExceptionOnScriptorror(false)";不要在它里面工作!为什么?(爪哇),exception,htmlunit,ignore,Exception,Htmlunit,Ignore,我的问题在一个话题上/我正在使用JDK+NetBeans/。所以,我从2.9-2.14之间的任何版本下载HtmlUnit,没有人不使用这个函数。例如我的代码(java): 和test.html: <html> <head> </head> <body> <script> VKVolumeDown(); alert("Hello"); </script> </body> </h

我的问题在一个话题上/我正在使用JDK+NetBeans/。所以,我从2.9-2.14之间的任何版本下载HtmlUnit,没有人不使用这个函数。例如我的代码(java):

和test.html:

<html>
<head>
</head>
<body>
    <script>
    VKVolumeDown();
    alert("Hello");
    </script>
</body>
</html>

VKVolumeDown();
警惕(“你好”);
…我得到脚本异常:

信息:捕获到脚本异常 ======异常开始======== EcmaError:lineNumber=[82]column=[0]lineSource=[]name=[ReferenceError]sourceName=[script in file:/D:/WebRoot/tmp2/test.html from(7,11)to(24,12)]message=[ReferenceError:[VKVolumeDown]未定义(script in file:/D:/WebRoot/tmp2/test.html from(7,11)to(24,12)#82)] com.gargoylesoftware.htmlunit.ScriptException:ReferenceError:“VKVolumeDown”未定义。(文件中的脚本:/D:/WebRoot/tmp2/test.html从(7,11)到(24,12)#82) 在com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:689) 位于net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:620)


而“alert(“Hello”);”不是执行:(。但是如果我使用“webClient.getOptions().setThroweExceptionOnScriptError(false)”;“option???”和函数调用上的异常“VKVolumeDown()”为什么必须忽略!这让我非常困惑。请帮帮我,这对我来说非常重要。谢谢。

那里抛出了一个JavaScript异常。这意味着JS代码中有一些东西是HTMLUnit(Rhino)的不喜欢。您首先应该了解,不引发异常不会修复JS代码中的错误(如果有)。因此,如果该问题不允许您执行操作,则隐藏或显示该操作仍将不允许您执行该操作

话虽如此,
setThroweExceptionOnScriptError
方法确定您是否希望
getPage
将在JS代码中检测到的不可避免的异常转发给应用程序。换句话说,如果您希望抛出异常,那么您很可能需要在应用程序中包装<代码>获取页面方法


解决方案:修复您的JS代码。

感谢您的快速响应,Mosty Mostacho。据我所知:JavaScript代码中类似的构造“try{}catch(err){}”并没有在HtmlUnit工具中发布。我的一般任务是遍历所有JavaScript代码(从头到尾)如果可能的话,执行所有的构造。我看到关于在try{}catch(err){}块中包装每个JavaScript构造的变体,但它不是那么优雅。可能是谁提出了任何变体?

我不相信。没有人知道如何解决这个问题?
<html>
<head>
</head>
<body>
    <script>
    VKVolumeDown();
    alert("Hello");
    </script>
</body>
</html>