我想要默认的http错误代码500。
我无法覆盖构造函数(我发现some docs about it,但编译器说There is no method in an ancestor class to be overridden: "constructor HttpError.Create(const AnsiString);
)
我尝试将Default 500
添加到状态属性定义中,但它也不起作用(我看到0)。
默认情况下,我如何才能获得500
状态?
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
program test;
uses
SysUtils;
Type
{:Base http exception}
HttpError = class(Exception)
private
FStatus: Integer;
published
property Status: Integer Read FStatus Write FStatus Default 500;
end;
begin
try
Raise HttpError.Create('Ooops');
except
on e: HttpError do
WriteLn(e.Status);
end;
end.
答案 0 :(得分:4)
显然Default
没有达到预期目的。
实际上Default
用于非常具体的内容,即向表单流式系统指示此发布(表单流式)属性的默认值(在本例中)为500,因此如果值为并没有改变,不需要使用表单数据保存该值。
请注意 - 有点令人困惑 - 即使在使用Default
属性的组件流上下文中,声明一个默认值就像你在这里做的那样并没有实际设置字段的默认值 - 你必须在构造函数中手动执行此操作。
最后,只有override
构造函数(如果它在基类中是虚拟的),而Exception
类型的构造函数不是。{1}}。只需将其声明为普通构造函数,并使用inherited... Create(...
虚拟构造函数主要用于构造完成以响应从表单文件中解析数据的组件。