从finally块中,是否有可能告诉异常已被提出?
您可以检查是否已分配ExceptObject或ExceptAddr。在VCL来源中,这是为了考试。在GIFImg.pas或jpeg.pas中。
应输出以下代码
ExceptObject <> nil ExceptObject = nil
如果你当然删除了例外
ExceptObject = nil ExceptObject = nil
try
try
raise Exception.Create('Just an exception');
finally
if ExceptObject <> nil then
WriteLn('ExceptObject <> nil')
else
WriteLn('ExceptObject = nil');
end;
except
end;
if ExceptObject <> nil then
WriteLn('ExceptObject <> nil')
else
WriteLn('ExceptObject = nil');
这有点像黑客,但你可以尝试调用AcquireExceptionObject。如果你处于异常状态,你将获得一个返回值,否则你将获得零。
(如果你确实得到了一个,请确保之后调用ReleaseExceptionObject。)
AFAIK这只能通过嵌套的try语句来实现:
Try
Try
...
Except
...
End;
Finally
...
End