JAVA中需要⼿动关闭的资源_⽤Java.url库⾃带的轮⼦,追求
最佳实践的话,需要在fi。。。
事情是这样的,维护⼀个⽼项⽬,要⽤到 Jython。
在 Jython 中请求⽹络连接,我尝试过 urllib2, httplib,碰到了⼀个这样的问题:
如果是 Jython 脚本第⼀次发送 GET 请求,是能正确获取到响应的内容( JSON ⽂件),⼀旦停⽌ Jython 脚本,再次启动,就会报错。⽹上搜了⼀下,stackoverflow 上⾯有⼈解释是 urllib2, httplib 使⽤了 Netty 库,这个问题是 Netty 造成的,推荐解决⽅案是⽤ Requests 库。
由于不想引⼊太多的依赖增加维护成本,我没有使⽤ Requests 库,直接⽤ java.url 库实现了⼀个版本。上⾯的问题已经通过这个⽅式解决。
当前的问题是,在使⽤ Java ⾃带的 java.url 库的时候,我看 stackoverflow 上有⼈说在 finally 部分对打开的连接和 InputStream 进⾏检查,如果可以就进⾏回收。(详见下⾯代码的 finally 部分)我想了解⼀下在不⽤框架直接⽤库的情况下这种写法是值得推荐的还是必须强制的?这样的操作适⽤于 Jython 么?
HttpURLConnection conn = null;
InputStream is = null;
try {
URL url = new URL("example");
// (set connection and read timeouts on the connection)
conn = (HttpURLConnection)url.openConnection();
is = new InputStream());
doSomethingWithInputStream(is);
} catch (Exception ex) {
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
}
}
if (conn != null) {
conn.disconnect();
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论