try except finally end;

love985 2007-11-14 01:19:44

try
try
语句1;
except
语句2;
end;
finally
语句3;
end;
//------------------
try
try
语句1;
finally
语句2;
end;
except
语句3;
end;

两个语句有没有一样,必须保证释放的情况下第2种在实际使用上是不是存在缺陷
...全文
154 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
love985 2007-11-14
  • 打赏
  • 举报
回复
那最后的结论是两种方法实质上是一样的,没有区别!哈哈!我只是试了一下,对我现在的结果表示怀疑而已,因为以前想的错了,一直以为是那样的!!!
禹爸爸 2007-11-14
  • 打赏
  • 举报
回复
在语句1出错的情况下,两种写法语句3都会执行的。
禹爸爸 2007-11-14
  • 打赏
  • 举报
回复
Finally括起来的语句是铁定会被执行的,无论是否有异常产生;
Except括起来的语句,则只有在产生异常的情况下会被执行,其他情况一概不执行的。
所以,上述两种写法,只要有异常产生,语句2和语句3都会被执行。
他们的区别在没有异常产生的情况下,第一种写法语句2不被执行,第二种写法语句3不被执行。
love985 2007-11-14
  • 打赏
  • 举报
回复
起先我也是这样觉得的
但奇怪的是两种方法结果都是一样的????????
出错时都执行了语句2,3
wvins 2007-11-14
  • 打赏
  • 举报
回复
语句1正常 语句1出错
第一种 1、3 1、2、3
第二种 1、2 1、2,3

这种东西很简单的,
自己写个Demo测一下就知道了

try
finally
end
并不捕获异常,会再抛出。所以第二种情况语句1出错的情况下会被外围的try..except..end捕获。
dulei115 2007-11-14
  • 打赏
  • 举报
回复
语句1正常 语句1出错
第一种 1、3 1、2、3
第二种 1、2 1、2
dulei115 2007-11-14
  • 打赏
  • 举报
回复
第二种,语句3始终都不会执行的,语句1出错后直接执行语句2,然后就直接到end了
love985 2007-11-14
  • 打赏
  • 举报
回复
up
我主要是想知道第2个情况在语句1出错的时候会不会执行语句3

16,748

社区成员

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

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