A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

关闭流的时候,带着异常处理,后面不是都用finally关闭流啊
但是最近迷惑了,怎么有两种格式,有区别吗?
格式一   finally --- try{ if () buf.close();} catch(){};
  1. finally{
  2.                         try{
  3.                                 if (bis!=null){
  4.                                         bis.close();
  5.                                 }
  6.                         }
  7.                         catch(IOException e){
  8.                                 throw new RuntimeException("输出流关闭失败");
  9.                         }
复制代码
格式二   finally --- if() try{ buf.close();} catch(){};
  1. finally  
  2.         {  
  3.             if (fis != null)  
  4.                 try  
  5.                 {  
  6.                     fis.close();  
  7.                 }  
  8.                 catch (IOException e )  
  9.                 {  
  10.                     throw new RuntimeException ("read失败");  
  11.                 }  
复制代码



评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

4 个回复

倒序浏览
这能有毛的区别啊,只要你没把出现异常的之后代码放在外面就行了。唯一的区别就是上面还能在外面加个else,里面的只能在里面加else。
回复 使用道具 举报
inception 来自手机 中级黑马 2014-10-30 17:31:58
藤椅
try中写的是会出现异常的语句。不会出现异常的语句if (fis != null)写在try里面或外面都无碍
回复 使用道具 举报
因为关闭流的时候也要抛出异常,如果最开始你的对象就没有获取到,fis就是空的,如果不处理,那就出错了啊
回复 使用道具 举报
第二个更专业,因为if(fis!=null)是不会出现异常的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马