简单问题,如何使用Abort?(20分)

  • 主题发起人 主题发起人 Archerfl
  • 开始时间 开始时间
A

Archerfl

Unregistered / Unconfirmed
GUEST, unregistred user!
谁能给我讲一下Abort的用法。它做什么用,请举例。
 
Abort是中断的意思
比如在TTable的Before Delete加入Abort那么点删除就没任何反应
 
那么,当代码执行到Abort时,会如何处理呢?程序流程又会走向那里呢?
 
Abort就相当与产生了一个哑异常,直接退出,当然,如果使用异常处理,也是可以截获的。
你使用Raise ..执行的结果,就和Abort的相同。只是是否给提示而已。
 
abort可以退出当前的事件处理
比如你在table控件的onnewrecord事件中使用abort,则这个table就不会触发这个事件,
也就不能再增加新的记录
 
下面是Delphi有关Abort的英文帮助:
Abort raises a special "silent exception" (EAbort), which operates like any
other exception, but does not display an error message to the end user. Abort
redirects execution to the end of the last try .. finally block.
上面说Abort把程序流程移到了try..finally中,那么这个语句在VCL源码中什么位置呢?


 
不是,你实验一下。
try
abort;
finally
ShowMessage('收到!');
end;

try
abort;
finally
ShowMessage('收到!');
end;
 
你可以把 Abort 看成一个异常,不过这个异常不会被调试器捕获,
如果你自己没有捕获得话,则效果是跳出所有循环和函数,回到
消息循环。
当然你自己的异常处理是可以捕获这个异常的:
try
Abort;
except
if (ExceptObject is EAbort) then
ShowMessage('Abort 异常');
else
ShowMessage('其他异常');
end;
 
我明白了,感谢大家,散分啦!
 
后退
顶部