我在java selenium上编写了一个try/catch块,我不明白为什么它不能工作。它应该在网页上检查一个web元素,如果没有找到,它应该抛出一个NoSuchElementException并转到catch块。真正发生的情况是,没有找到元素,执行也没有继续catch块,它通过测试(Selenium WebTest)并完全停止执行,我的测试也失败了。我还在main方法中包含了“throws NoSuchElementException”。这里有一些代码可供参考。问题会是什么?如何编写防故障代码?
try {
// this is the web element to be found by xpath,sometimes it is on the webpage,sometimes not
can = driver.findElement(By.xpath("//*[@id=\"revealGameAnimation\"]/canvas"));
}
catch(NoSuchElementException e)
{
// some code here
}
您的代码无法工作,因为在这种情况下,Selenium引发ElementNotFoundException
异常。
我一直在收到com。谷歌。格森。JsonSyntaxException无法调用Gson。fromJson(),因此添加了一个捕获(异常)逻辑,但错误永远不会被捕获,而只是被抛出! 这是我所拥有的: 运行测试时,我得到“com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:应为BEGIN\u对象,但在第1行第1列路径$
我真的不明白使用嵌套的try-catch块的意义。它们很难阅读,有时也不太直白。例如: 上面的代码可读性更强,我可以理解它的功能——如果发生异常,可以由其中一个catch块处理。但如果我使用嵌套表单: 上面的代码乱七八糟!但它实现了与第一个代码完全相同的功能。还是没有?帮我弄清楚:(
问题内容: 我想问为什么我们不必在一段时间内添加try-catch块,而应该在其他例外情况下这样做呢? 我的意思是: 编辑:当我说:很明显会有例外发生时,为什么编译器不禁止这样做呢? 问题答案: 那是因为这是一个 未经检查的 异常。不需要显式声明或捕获它。另请参阅有关该主题的Sun教程。 更新: 通常,您只应抛出一个(最好是javadoc中列出的其子类之一)以表明调用者做错了。即传递一个参数(然后
我正在尝试捕获caller方法中的IllegalAccessException。但它抓不到它。而是给出了一个错误。
问题内容: 我正在学习CopyOnWriteArrayList类。 复制新阵列的目的是什么? 是其他线程读取数组吗? 因此,如果系统具有高并发性,并且大多数线程的操作都在读取而不是写入,那么最好使用。 问题答案: 如该链接所述: CopyOnWriteArrayList是Java 5并发API中引入的并发Collection类,以及它在Java中流行的表亲。 工具列表界面类似,并且但它的一个线程安
问题内容: 我需要一种从try / catch块的中间中断而又不会引发异常的方法。类似于中断并继续for循环的操作。这可能吗? 我对于抛出一个自定义异常(将其命名为“ BreakContinueException”)变得很奇怪,该异常在其catch处理程序中什么都不做。我敢肯定这很扭曲。 因此,我不知道任何直接的解决方案吗? 问题答案: 正确的方法可能是通过将try-catch块放在单独的方法中来