从finally block 中,是否可以知道已经引发了异常?
最佳答案
您可以检查 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');
关于delphi - 我如何判断我是否处于 Delphi 异常堆栈中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1416202/