在我现有的项目中,我的代码如下-
public static boolean isSessionAvailable(WebDriver driver){
try{
driver.getTitle();
return true;
}
catch(UnreachableBrowserException s){
return false;
}
catch(NoSuchWindowException s){
return false;
}
catch(Throwable t){
return false;
}
}
我打算对其进行重构。当前不确定try块可以抛出什么异常。据我所知,WebDriverException
是所有这些可能例外的父项。在这种情况下,请确认下面的重构编码是否正确。(注意。我也可以使用功能上由|分隔的多重异常捕获)
public static boolean isSessionAvailable(WebDriver driver){
try{
driver.getTitle();
return true;
}
catch(WebDriverException wde){
return false;
}
}
我可以使用Exception
或Throwable
,但这是通用的,而不是特定的。
答案 0 :(得分:1)
很显然,您的两个代码段不同在做相同的事情。
第一个代码捕获了Throwable
,因此没有任何应该能够从该方法中“退出”。
例如,您的重构代码允许RuntimeException
冒泡至调用isSessionAvailable()
的客户端代码。
您问这是否“正确”,但我们不能告诉您。
因为“正确”是基于您的要求。如果该方法必须永不抛出,则您的重构是错误的。但是,如果没有这样的要求:那么您的代码就可以了。
除此之外,感觉真正的答案是:您应该研究Java中的异常处理。因为您应该理解您在课堂上写下的每一行。
最后:我建议您也考虑添加某种日志记录。您的代码基本上会忽略各种错误。这使得以后很难理解发生了什么。