try{
WebElement naimi_logo = firefox.findElement(By.xpath("//a[@href=\"/astana/\"]/img") ) ;
naimi_logo.click();
}catch( IllegalStateException e){
throw new IllegalStateException("this image is not clickable!") ;
}
catch(NoSuchElementException e){
throw new NoSuchElementException("logo is not found!!") ;
}
我应该在catch块中抛出异常吗?或者只是打印出控制台发生的事情会更好吗?
捕获的顺序是否重要?
答案 0 :(得分:2)
看起来您的意图是在发生异常时添加更多信息。在那种情况下你正在做的很好。但是,您将失去基础异常的完整堆栈跟踪。
您可以使用:
java.lang.RuntimeException.RuntimeException(String, Throwable)
如果您不想丢失原始异常的堆栈跟踪。
答案 1 :(得分:1)
当我抓住它时,我可以再次抛出异常吗?
只需重新抛出你做的例外
throw e;
另一方面,这相当于根本没有捕获异常并让它传播。
也许您希望为异常提供更好的消息,但保留异常类。您通常会这样做:
}catch( IllegalStateException e){
throw new IllegalStateException("this image is not clickable!", e);
}
catch(NoSuchElementException e){
throw new NoSuchElementException("logo is not found!!", e);
}
我真的应该在我的catch块中抛出异常吗?
这取决于您的方法的目的。你的选择基本上是