我需要在异常时包含错误代码。
type EInOutError = class(Exception)
ErrorCode: Integer;
end;
但我不知道如何设置错误代码。 我试过了:
type ECustomError= class(Exception)
ErrorCode: Integer=129;
end;
但没有成功,我该如何设置错误代码?
答案 0 :(得分:10)
你不能(也不应该)在课堂上设置这个'定义。这里没有关于它被调用的地点和原因的背景。相反,您需要在运行时,在可能引发此异常的任何位置分配它。
这可以通过从EInOutError
派生您的类并向其添加自定义构造函数来完成:
type
ECustomError = class(EInOutError)
public
constructor Create(AMsg: String; ACode: Integer); reintroduce;
end;
constructor ECustomError.Create(AMsg: String; ACode: Integer);
begin
inherited Create(AMsg);
ErrorCode := ACode;
end;
然后,当你举起异常时,你就这样称呼它......
raise ECustomError.Create('Some error message', 129);
您可以更进一步,将此代码添加到您的消息中......
constructor ECustomError.Create(AMsg: String; ACode: Integer);
begin
inherited CreateFmt('%s (Error Code %d)', [AMsg, ACode]);
ErrorCode := ACode;
end;