클래스 정의에서이를 설정할 수 없으며 설정할 수 없습니다. 어디에서 왜 호출되고 있는지에 대한 컨텍스트가 없습니다. 대신이 예외가 발생할 수있는 모든 위치에서 런타임에이 함수를 할당해야합니다.
이것은 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;
귀하의 코드는에 시도 그것의 정의에 값을 써라. 확실히 이것은 당신이 찾고있는 것이 아닙니다. 예외가 발생했을 때 이것을 할당해야합니다. 맞습니까? 그렇다면이 예외 클래스에 대해 생성자를 구현하고 예외를 만들 때이 변수를 전달해야합니다. –
오류 코드를 표시하거나 다른 결과에 기능? –
@NasreddineAbdelillahGalfout 만 표시합니다. – strykerbits