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是否在异常处理程序之前运行,反之亦然.有时它并不重要,但它往往确实有所作为.

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...