我正在使用第三方api在春季获得用户身份验证。我需要捕捉在试图连接到该api时出现的异常,比如连接超时和找不到页面(如果他们的服务器关闭)。现在,我正试图用下面的代码来完成这个任务。这是否足以捕获这些例外情况?
public boolean userAuthentication(String userName) {
try {
if(hasAccess(userName)) {
return true;
} else {
return false;
}
} catch (IOException e) {
logger.info("exception occured "+ e);
return false;
}
}这里hasAccess是第三方api,我不能更改该方法。然而,我需要捕获这些异常并给用户适当的响应。
发布于 2018-11-02 05:10:21
hasAccess(字符串)定义了任何抛出语句吗?
它是否定义了抛出IOException?
您是否有权访问此方法的源代码?如果您这样做了,那么您可以去检查它们是否正在处理抛出的任何异常,或者它们是否正在重新抛出任何运行时异常。
为了更安全起见,您应该捕获运行时异常,因为错误对您来说是不可预测的,因此您可以优雅地处理错误。
发布于 2018-11-02 05:08:58
如果不查看hasAccess()的实现,就不可能知道这是否足够,因为这是抛出错误的函数。
但是,如果确实需要捕获此异常,则始终可以使用
try {
if (hasAccess(userName)){}
} catch (Exception e) {
//caught
}这并不总是好的实践,因为异常会捕获每个异常,但是如果您正在寻找异常,那么它是一个解决方案。
https://stackoverflow.com/questions/53112874
复制相似问题