try
  try
    语句1;
  except
    语句2;
  end;
finally
  语句3;
end;
//------------------
try
  try
    语句1;
  finally
    语句2;
  end;
  except
  语句3;
end;两个语句有没有一样,必须保证释放的情况下第2种在实际使用上是不是存在缺陷

解决方案 »

  1.   

    第二种,语句3始终都不会执行的,语句1出错后直接执行语句2,然后就直接到end了
      

  2.   

                    语句1正常                   语句1出错 
    第一种       1、3                           1、2、3 
    第二种       1、2                           1、2,3这种东西很简单的,
    自己写个Demo测一下就知道了try
    finally
    end
    并不捕获异常,会再抛出。所以第二种情况语句1出错的情况下会被外围的try..except..end捕获。
      

  3.   

    Finally括起来的语句是铁定会被执行的,无论是否有异常产生;
    Except括起来的语句,则只有在产生异常的情况下会被执行,其他情况一概不执行的。
    所以,上述两种写法,只要有异常产生,语句2和语句3都会被执行。
    他们的区别在没有异常产生的情况下,第一种写法语句2不被执行,第二种写法语句3不被执行。