黑马程序员技术交流社区

标题: 两种finally结束流的方式,两种格式有什么区别吗? [打印本页]

作者: nerveva2000    时间: 2014-10-29 20:46
标题: 两种finally结束流的方式,两种格式有什么区别吗?
关闭流的时候,带着异常处理,后面不是都用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.                 }  
复制代码




作者: wzg1015    时间: 2014-10-30 01:25
这能有毛的区别啊,只要你没把出现异常的之后代码放在外面就行了。唯一的区别就是上面还能在外面加个else,里面的只能在里面加else。
作者: inception    时间: 2014-10-30 17:31
try中写的是会出现异常的语句。不会出现异常的语句if (fis != null)写在try里面或外面都无碍
作者: 小鸡捉你    时间: 2014-10-30 17:45
因为关闭流的时候也要抛出异常,如果最开始你的对象就没有获取到,fis就是空的,如果不处理,那就出错了啊
作者: OnlyStyle    时间: 2014-10-30 19:26
第二个更专业,因为if(fis!=null)是不会出现异常的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2