微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

delphi – 使用try-except块包装try-finally块之间有什么区别,反之亦然?

Delphi中两种编码模式之间是否存在实际差异:

版本1

try
  try
    {Do something}
  finally
    {Do tidy up}
  end
except
  {Handle exception}
end;

版本2

try
  try
    {Do something}
  except
    {Handle exception}
  end
finally
  {Do tidy up}
end;

解决方法

有两点不同:

> except和finally块执行的相对顺序不同.在版本1中,finally在except之前执行.在版本2中,执行顺序是相反的.
>在版本1中,如果finally块引发,则它将由except块处理.在版本2中,则它将由下一个包含异常处理程序处理,即在此代码之外.

通常你不关心最后提升的块.你根本不希望发生这种情况,如果发生这种情况,有些东西可能会非常破碎.

因此,重要的区别在于finally是否在异常处理程序之前运行,反之亦然.有时它并不重要,但它往往确实有所作为.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐