日期:2014-05-20  浏览次数:20818 次

多个关闭资源真的可以放在一个try里吗
第一种写法-----------------------------------------------
...
} finally
{
try {
br_fr_doc.close();
isr_fr_doc.close();
} catch (IOException e) {
e.printStackTrace();
}
}
...
第二种写法-----------------------------------------------
...
} finally
{
try {
br_fr_doc.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
isr_fr_doc.close();
} catch (IOException e) {
e.printStackTrace();
}
}
...


个人觉得第一种方法里,如果br_fr_doc.close();发生异常的话,后面的isr_fr_doc.close();就不会执行。
认为第二种方法才是对的。可是看网上视频里,老师居然用第一种方法。难道是我多虑了吗?
请高人解答。
java?资源关闭

------解决方案--------------------
你木有多虑,你虑的是对的。
JDK1.5里面的java.io.Closeable貌似就是跟这个有关。
例如java.io中的一些需要关闭的东东,都实现了这个接口。
这样就可以写一个统一的方法,关闭的时候都调它就OK了。
public void close(Closeable clo)
{
if(null == clo)
return;
try
{
clo.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
close(br_fr_doc);
close(isr_fr_doc);

------解决方案--------------------

//JDK1.5的话,这么写多好:
public static void close(Closeable... closeables){
if(closeables == null 
------解决方案--------------------
 closeables.length <= 0){
return;
}
for(Closeable closeable : closeables){
try{
if(closeable != null){
closeable.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
close(stream1,stream2,stream3);