一直来都很少用这个,都是动态创建完,在可能出异常的地方加 try except结构,然后跟着把动态创建的free掉
比如
 
idh:=TIdHTTP.Create(nil);
 try
  idh.get('http://www.baidu.com',s);
  except  end; idh.free;我把这样的方式用在很多项目中,都没有出现问题
但看到大家都在用 try finally ,就纳闷了。delphi 的try finally有必要用吗?

解决方案 »

  1.   

    同楼主一样,基本没用过try finally
      

  2.   

    同理,delphi 的case of有必要用吗?用多个if else不就解决了?
      

  3.   


    为什么不能释放呢?按代码就是异常也会执行最后的free释放操作的
      

  4.   


    当每一步,都可能存在异常时,你不可能每步要全部的try except处理吧???
    何况在try except中也有异常呢???若用finally不就变得很简单了吗...
      

  5.   

    你在try部分的代码里加句exit试试看。
      

  6.   

    我是觉得用try finally结构要往中间写代码,如果代码比较多,finally会摆到离try很远很远的地方
    这样看起来比较费神,而我遵循动态创建的一定要在最近的位置释放掉,这样很容易检查是否释放了你说得也很有道理,可能是我写的代码很少涉及大量数据库操作什么的.有时候不能马上free掉创建的,而要执行比较多代码,这样的话 try finally 真的很必要了
      

  7.   


    呵呵,exit我还是知道意思的。
    如果真要用exit , 我不会在exit前先free一下?