2009-11-26 2 views
0

RpcRaiseException()은 서버 측 또는 클라이언트 측의 파이프 콜백에서 RPC 호출 중에 발생하는 오류를 나타내는 MS RPC 런타임의 기능입니다. RpcRaiseError()에 전달 된 RPC_STATUS는 RPC 호출 사이트로 전달됩니다.좋은 오류 처리를 위해 RpcRaiseException()을 어떻게 사용합니까?

문제는 어떻게 RPC_STATUS 값을 선택합니까?

파이프에 말하기 pull() 콜백 IStream*에서 데이터를 읽고 그 데이터를 파이프로 공급합니다. 지금 IStream::Read()은 오류를 나타내는 HRESULT을 반환하며 전화를 중단하려면 RpcRaiseException()으로 전화해야합니다.

어떤 가치가 있습니까?

+0

받은 HRESULT를 전달하는 것이 잘못된 이유는 무엇입니까? 확실히 RPC_E_SERVERFAULT를 능가합니다. –

+0

한 가지만 - 클라이언트 측에서 의미있는 메시지를 생성 할 것인지 잘 모르겠습니다. – sharptooth

답변

0

실패 할 수있는 API가있는 경우 API가 API의 반환 값으로 실패 코드를 반환하지 않는 이유는 무엇입니까?

RpcRaiseException을 사용하려는 경우 예외가 클라이언트 측의 예외로 전파되므로 예외 코드는 클라이언트 측의 RpcExcept 처리기에서 RpcExceptionCode로 표시됩니다.

+0

단순히 HRESULT 값을 RpcRaiseError()에 전달한다는 의미입니까? 그렇지 않으면 파이프 콜백에 문제가 있음을 나타내는 방법이 없습니다. – sharptooth

+0

아니요, API를 HRESULT를 반환하는 것으로 정의합니다. 그런 다음 오류 코드를 서버에서 반환하면됩니다. –

+0

sharptooth : 명확성을 위해 내 대답을 편집하고 잘못된 가정을 수정합니다. –

관련 문제