TsgcWSPServer_WAMP › 메서드 › CallError
원격 프로시저를 실행할 수 없었거나 성공적으로 완료되지 않았을 때 호출자에게 CALLERROR 응답(메시지 유형 4)을 보냅니다.
procedure CallError(const aCallId, aErrorURI, aErrorDesc: String; const aErrorDetails: String = '');
| Name | Type | 설명 |
|---|---|---|
aCallId | const String | 클라이언트가 원래 원격 프로시저를 호출할 때 생성한 식별자입니다. 보류 중인 호출과 오류 응답을 연관시키는 데 사용됩니다. |
aErrorURI | const String | 오류 클래스를 고유하게 식별하는 URI(또는 CURIE)입니다(예: http://example.com/error#not_authorized). |
aErrorDesc | const String | 오류에 대한 사람이 읽을 수 있는 설명으로, 로깅 및 디버깅에 유용합니다. |
aErrorDetails | const String | 선택적 애플리케이션별 오류 페이로드(예: 추가 컨텍스트가 있는 JSON 객체)입니다. 필요하지 않은 경우 빈 문자열을 전달하십시오. |
RPC를 이행할 수 없을 때(잘못된 인수, 권한 부여 누락, 내부 예외, 타임아웃 등) OnCall 핸들러 내부에서(일반적으로 except 분기에서) CallError를 호출하십시오. 서버는 호출자에게 WAMP CALLERROR 프레임 [4, CallID, ErrorURI, ErrorDesc, ErrorDetails]를 작성하고 대기 목록에서 호출을 제거합니다. 즉, 동일한 aCallId에 대해 더 이상 CallResult 또는 CallProgressResult를 보낼 수 없습니다. aCallId가 알 수 없는 경우(이미 응답함, 취소됨 또는 등록되지 않음) 메서드는 아무 작업도 수행하지 않습니다.
procedure TForm1.sgcWSPServer_WAMP1Call(Connection: TsgcWSConnection;
const CallId, ProcURI: string; Arguments: TStringList);
begin
try
if ProcURI = 'com.example.divide' then
sgcWSPServer_WAMP1.CallResult(CallId, IntToStr(10 div StrToInt(Arguments[0])));
except
on E: Exception do
sgcWSPServer_WAMP1.CallError(CallId,
'http://example.com/error#invalid_argument', E.Message, '');
end;
end;