输出异常信息
代码
on <异常对象类型> do 获取异常信息
procedure TForm1.Button1Click(Sender: TObject);
begin
try
System.Error(reAccessViolation);
except
on e: Exception do
ShowMessage(e.Message);
end;
end;
ExceptObject
获取异常信息
procedure TForm1.Button2Click(Sender: TObject);
begin
try
System.Error(reAccessViolation);
except
ShowMessage(Exception(ExceptObject).Message);
end;
end;
AcquireExceptionObject
获取异常信息
procedure TForm1.Button3Click(Sender: TObject);
var
ExceptionPtr: Pointer;
begin
ExceptionPtr := nil;
try
System.Error(reAccessViolation);
except
ExceptionPtr := AcquireExceptionObject;
end;
if ExceptionPtr = nil then
ShowMessage('没有异常')
else
begin
ShowMessage('异常信息 ' + TObject(ExceptionPtr).ToString);
ReleaseExceptionObject;
end;
end;
方法
System.ExceptObject
function ExceptObject: TObject;
unit
返回当前正在处理的异常的 Exception
对象。 如果当前没有处理异常,ExceptObject
返回 nil。
ExceptObject
在异常变量(on <异常对象类型> do)不可访问时很有用。由
ExceptObject
返回的对象在异常处理程序完成后可能不存在。 因此,不能使用ExceptObject
来保留对异常对象的引用,或再次引发异常。 如果需要执行上述任何一项操作,请调用AcquireExceptionObject
。
System.AcquireExceptionObject
function AcquireExceptionObject: TObject;
unit
保留对异常对象的访问。
AcquireExceptionObject
返回一个 TObject
给当前异常对象,并防止当前异常处理程序退出时异常对象被释放。
AcquireExceptionObject
会增加异常对象的引用计数。当不再需要异常对象时,确保减少引用计数。 如果使用异常对象再次引发异常,这会自动发生。 在所有其他情况下,对AcquireExceptionObject
的每次调用都必须具有对ReleaseExceptionObject
的匹配调用。AcquireExceptionObject
/ReleaseExceptionObject
序列可以嵌套。
System.ReleaseExceptionObject
procedure ReleaseExceptionObject;
unit
释放由 AcquireExceptionObject
获取的异常对象。
System.Error
procedure Error(errorCode: TRuntimeError);
unit
用于生成运行时异常。
参数
errorCode 定义要报告的错误类型。
标签:输出,end,AcquireExceptionObject,delphi,System,TObject,ExceptObject,异常 From: https://www.cnblogs.com/txgh/p/17231269.html