2009-11-26 99 views
0

RpcRaiseException()功能在MS RPC運行時,以指示一個RPC調用或者在服務器側或客戶端上的一個管回調過程中發生的錯誤。傳遞到RpcRaiseError()的RPC_STATUS被傳播到RPC調用的站點。如何使用RpcRaiseException()進行良好的錯誤處理?

問題是,我該如何選擇RPC_STATUS價值?

說,在管pull()回調我從IStream*讀取數據並將該數據供給到管。現在IStream::Read()返回HRESULT指示錯誤,我需要調用RpcRaiseException()中斷通話。

我通過什麼樣的價值?

+0

剛剛通過HRESULT時出現了什麼問題?確實擊敗了RPC_E_SERVERFAULT。 – 2009-11-26 17:07:10

+0

只有一件事 - 我不確定它會在客戶端產生一個有意義的消息。 – sharptooth 2009-11-27 13:17:31

回答

0

如果您有可能會失敗的API,爲什麼沒有API返回的故障代碼作爲API的返回值?

如果您想使用RpcRaiseException,則該異常將作爲客戶端的異常傳播,因此異常代碼將在客戶端的RpcExcept處理程序中顯示爲RpcExceptionCode。

+0

你的意思是我只是將HRESULT值傳遞給RpcRaiseError()。否則,我無法指出管道回調中出現問題。 – sharptooth 2009-11-27 13:18:28

+0

不,您將您的API定義爲返回HRESULT。然後,您只需從服務器返回錯誤代碼。 – 2009-11-27 16:32:17

+0

sharptooth:請注意,爲了清晰起見我編輯了我的答案,並糾正了一個不正確的假設。 – 2009-11-27 16:42:51

相關問題