我正在使用 AWS java SDK 将文件上传到 AWS 管理控制台的存储桶上。但是,如果当我第一次尝试访问该文件时在线上没有这样的文件,我的代码将捕获异常(NoSuchKey)。然后我想关闭连接。问题是我没有任何引用来关闭该连接,因为异常(原始引用将为空)。这是我的代码:
S3Object object = null;
GetObjectRequest req = new GetObjectRequest(bucketName, fileName);
try{
logconfig();
object = s3Client.getObject(req);
...
catch(AmazonServiceException e){
if(e.getErrorCode().equals("NoSuchKey"))
我试图使用“object”作为引用来关闭 eclipse 和 Aws 之间的连接,但显然发生异常时“object”为 null。
谁能告诉我该怎么做?
此外,由于我无法关闭连接,我的控制台每 60 秒就会出现此警告:
8351167 [java-sdk-http-connection-reaper] DEBUG org.apache.http.impl.conn.PoolingClientConnectionManager - Closing connections idle longer than 60 SECONDS
如果你使用Java 1.7,你可以使用尝试资源 http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html堵塞。当物体离开方块时会自动关闭。
GetObjectRequest req = new GetObjectRequest(bucketName, fileName);
try(S3Object object = s3Client.getObject(req)) {
...
} catch(AmazonServiceException e) {
if(e.getErrorCode().equals("NoSuchKey"));
}
如果您使用Java 1.6或更早版本,则需要在finally块中执行
S3Object object = null;
GetObjectRequest req = new GetObjectRequest(bucketName, fileName);
try {
object = s3Client.getObject(req))
...
} catch(AmazonServiceException e) {
if(e.getErrorCode().equals("NoSuchKey"));
} finally {
if (object != null) {
object.close();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)