社区
语言基础/算法/系统设计
帖子详情
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有必要用吗?
...全文
389
11
打赏
收藏
delphi 的try finally有必要用吗
一直来都很少用这个,都是动态创建完,在可能出异常的地方加 try except结构,然后跟着把动态创建的free掉 比如 idh:=TIdHTTP.Create(nil); try idh.get('http://www.baidu.com',s); except end; idh.free; 我把这样的方式用在很多项目中,都没有出现问题 但看到大家都在用 try finally ,就纳闷了。delphi 的try finally有必要用吗?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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
Delphi
异常处理
try
except语句和
try
final
ly
语句
一、异常的来源 在
Delphi
的应用程序中,下列的情况都比较有可能产生异常。 (1)文件处理 (2)内存分配 (3)Windows资源 (4)运行时创建对象和窗体 (5)硬件和操作系统冲突 二、异常的处理 (1)
try
…except…end; 在
try
体内的代码发生异常时,系统将转向except部分进行异常的处理。这是
Delphi
处理异常的最基本的方式之一。 (2)
try
…
final
ly
…end; 这种异常处理结构一般用于保
delphi
异常捕获
try
except语句 和
try
final
ly
语句用法
原文地址:
delphi
try
except语句和
try
final
ly
语句用法以及区别 一直写程序都没管他们,也尽量很少用,今天终于想把他给弄个明白,在网上找来,记下!主要是前面小部分,后面的是详细说明(很啰嗦!) 一、异常的来源 在
Delphi
的应用程序中,下列的情况都比较有可能产生异常。 (1)文件处理 (2)内存分配 (3)Window...
Delphi
try
final
ly
语句使用
在
Delphi
中,
try
-
final
ly
语句用于执行一段代码,无论是否发生异常都要执行
final
ly
块中的代码。
try
块中的代码可能会引发异常,而
final
ly
块中的代码总是会在
try
块执行完毕后被执行。在这个示例中,
try
块中放置的是可能会引发异常的代码,而
final
ly
块中放置的是无论是否发生异常都要执行的代码。在
try
块执行完毕后,无论是否发生异常,都会执行
final
ly
块中的代码。需要注意的是,
try
-
final
ly
语句只能处理异常,而不能处理异常的信息。
delphi
try
except语句 和
try
final
ly
语句用法以及区别
一、异常的来源 什么是异常程序开发过程中,有编译期错误和运行期错误,编译期错误很容易发现,而运行期错误(逻辑错误和异常)往往很难预料.为了程序的稳定性和可靠性,就需要对程序异常处理和保护. 异常:理解为一种特殊的事件,该事件发生时,程序的正常执行将被打断.由程序导致的不正常情况是错误而不是异常,程序错误与异常不是相同的概念.异常是为方便用户报告错误并处理错误而创建的机制,一般是由操作系统完成的...
delphi
中
Try
...Except 语句和
Try
...
Final
ly
语句 .
在
Try
...Except 语句中可以进行抛出异常和处理异常的工作。
Try
...Except 的一般形式如下:
try
Statements1; except on Exception1 do HandleStatements1; on Exception2 do HandleStatements2; ⋯ on ExceptionN do HandleStateme
语言基础/算法/系统设计
16,741
社区成员
33,233
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章