2009-11-26 101 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

相关问题