西西纸 2022-05-30 16:23 采纳率: 28.6%
浏览 40

关闭流的操作,写在try-catch外面和写在finally里面有什么区别,都会执行的呀??!

关闭流的操作,写在try-catch外面和写在finally里面有什么区别,都会执行的呀??!
public void test1() {
    BufferedOutputStream bos = null;
    try{
        bos = new BufferedOutputStream(new FileOutputStream("d:/123.txt"));
    }catch (Exception e){
        System.out.println(e.getMessage());
    } finally {
        try {
            bos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
public void test2(){
    BufferedOutputStream bos = null;
    try{
        bos = new BufferedOutputStream(new FileOutputStream("d:/123.txt"));
    }catch (Exception e){
        System.out.println(e.getMessage());
    }

    try {
        bos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
像这种情况,是不是效果都是一样的,哪种写法好一点
  • 写回答

1条回答 默认 最新

  • 皮蛋不吃粥 2022-05-30 16:36
    关注

    效果没区别,但是如果第一个在catch抛了异常,第二种写法不会关闭流

    评论

报告相同问题?

问题事件

  • 创建了问题 5月30日

悬赏问题

  • ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题
  • ¥20 遥感植被物候指数空间分布图制作
  • ¥15 安装了xlrd库但是import不了…
  • ¥20 Github上传代码没有contribution和activity记录
  • ¥20 SNETCracker
  • ¥15 数学建模大赛交通流量控制
  • ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢
  • ¥50 paddleocr最下面一行似乎无法识别
  • ¥15 求某类社交网络数据集
  • ¥15 靶向捕获探针方法/参考文献