delphi 的try finally有必要用吗

fly002mei 2012-06-14 05:14:43
一直来都很少用这个,都是动态创建完,在可能出异常的地方加 try except结构,然后跟着把动态创建的free掉
比如

idh:=TIdHTTP.Create(nil);
try
idh.get('http://www.baidu.com',s);
except

end;

idh.free;

我把这样的方式用在很多项目中,都没有出现问题
但看到大家都在用 try finally ,就纳闷了。delphi 的try finally有必要用吗?
...全文
324 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly002mei 2012-06-15
  • 打赏
  • 举报
回复
感谢大家!,基本明白了。结贴
fly002mei 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

你在try部分的代码里加句exit试试看。
[/Quote]

呵呵,exit我还是知道意思的。
如果真要用exit , 我不会在exit前先free一下?
fly002mei 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:
引用 4 楼 的回复:

一般情况下当然没必要了,但是在构造对象,或者操作数据库,就很有必要了,一旦有异常如果你没加,对象就不能释放。


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


当每一步,都可能存在异常时,你不可能每步要全部的try except处理吧???
何况在try except中也有异常呢???

若用fi……
[/Quote]


我是觉得用try finally结构要往中间写代码,如果代码比较多,finally会摆到离try很远很远的地方
这样看起来比较费神,而我遵循动态创建的一定要在最近的位置释放掉,这样很容易检查是否释放了

你说得也很有道理,可能是我写的代码很少涉及大量数据库操作什么的.有时候不能马上free掉创建的,而要执行比较多代码,这样的话 try finally 真的很必要了





sforiz 2012-06-14
  • 打赏
  • 举报
回复
遇到需要用的场景,就会使用了
BambooCaep 2012-06-14
  • 打赏
  • 举报
回复
你在try部分的代码里加句exit试试看。
kaikai_kk 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
引用 4 楼 的回复:

一般情况下当然没必要了,但是在构造对象,或者操作数据库,就很有必要了,一旦有异常如果你没加,对象就不能释放。


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

当每一步,都可能存在异常时,你不可能每步要全部的try except处理吧???
何况在try except中也有异常呢???

若用finally不就变得很简单了吗...
fly002mei 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

一般情况下当然没必要了,但是在构造对象,或者操作数据库,就很有必要了,一旦有异常如果你没加,对象就不能释放。
[/Quote]

为什么不能释放呢?按代码就是异常也会执行最后的free释放操作的
changsn 2012-06-14
  • 打赏
  • 举报
回复
一般情况下当然没必要了,但是在构造对象,或者操作数据库,就很有必要了,一旦有异常如果你没加,对象就不能释放。
s11ss 2012-06-14
  • 打赏
  • 举报
回复
当然记录的定义是个例外:)
s11ss 2012-06-14
  • 打赏
  • 举报
回复
同理,delphi 的case of有必要用吗?用多个if else不就解决了?
一如当初 2012-06-14
  • 打赏
  • 举报
回复
同楼主一样,基本没用过try finally

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧