第一种写法-----------------------------------------------
...
} 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 资源关闭

解决方案 »

  1.   

    你木有多虑,你虑的是对的。
    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);
      

  2.   

    这么写程序太累了,我都不用try
      

  3.   


    //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);