【发布时间】:2015-09-05 08:19:45
【问题描述】:
据我了解,我想遵循最终释放资源的最佳做法,以防止任何连接泄漏。这是我在 HelperClass 中的代码。
public static DynamoDB getDynamoDBConnection()
{
try
{
dynamoDB = new DynamoDB(new AmazonDynamoDBClient(new ProfileCredentialsProvider()));
}
catch(AmazonServiceException ase)
{
//ase.printStackTrace();
slf4jLogger.error(ase.getMessage());
slf4jLogger.error(ase.getStackTrace());
slf4jLogger.error(ase);
}
catch (Exception e)
{
slf4jLogger.error(e);
slf4jLogger.error(e.getStackTrace());
slf4jLogger.error(e.getMessage());
}
finally
{
dynamoDB.shutdown();
}
return dynamoDB;
}
我的疑问是,由于无论如何都会执行 finally 块,dynamoDB 是否会返回空连接,因为它将在 finally 块中关闭,然后执行return 声明? TIA。
【问题讨论】:
-
当你尝试它会发生什么?
-
最好在调用 dynamoDB.shutdown() 之前对 dynamoDB 进行空检查;
-
dynamoDB 无论是否发生异常都会关闭。您只在使用后关闭。如果您只想要连接,为什么您甚至需要关闭它,因为如果您将没有连接出现问题并引发空指针异常,如果您获得连接,为什么要关闭?
-
@aioobe 请原谅我的延迟回复。这些天来,我被调到另一个项目中,没有机会从事这个项目。您的回答非常有帮助和赞赏。非常感谢。 :+1
标签: java amazon-dynamodb try-catch-finally program-flow