在Exception上设置ErrorCode

时间:2017-05-03 21:58:23

标签: delphi

我需要在异常时包含错误代码。

Exceptions (Delphi)

type EInOutError = class(Exception)
       ErrorCode: Integer;
     end;

但我不知道如何设置错误代码。 我试过了:

type ECustomError= class(Exception)
       ErrorCode: Integer=129;
     end;

但没有成功,我该如何设置错误代码?

1 个答案:

答案 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;