在 SimpleXMLRPCServer 上发送异常
我试图在 SimpleXMLRPCServer 的服务器端引发异常; 但是,所有尝试都会在客户端出现“Fault 1”异常。
RPC_Server.AbortTest() 文件“C:\Python25\lib\xmlrpclib.py”,第 1147 行,调用 返回 self.__send(self.__name, args) 文件“C:\Python25\lib\xmlrpclib.py”,第 1437 行,在 __request 中 详细=自我.__详细 文件“C:\Python25\lib\xmlrpclib.py”,第 1201 行,根据请求 返回 self._parse_response(h.getfile(), sock) 文件“C:\Python25\lib\xmlrpclib.py”,第 1340 行,在 _parse_response 中 返回 u.close() 文件“C:\Python25\lib\xmlrpclib.py”,第 787 行,关闭 引发故障(**self._stack[0]) xmlrpclib.Fault: :测试被 RPC 中止 请求”>
I'm trying to raise an exception on the Server Side of an SimpleXMLRPCServer; however, all attempts get a "Fault 1" exception on the client side.
RPC_Server.AbortTest()
File "C:\Python25\lib\xmlrpclib.py", line 1147, in call
return self.__send(self.__name, args)
File "C:\Python25\lib\xmlrpclib.py", line 1437, in __request
verbose=self.__verbose
File "C:\Python25\lib\xmlrpclib.py", line 1201, in request
return self._parse_response(h.getfile(), sock)
File "C:\Python25\lib\xmlrpclib.py", line 1340, in _parse_response
return u.close()
File "C:\Python25\lib\xmlrpclib.py", line 787, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: :Test Aborted by a RPC
request">
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,这就是当您在服务器端引发异常时发生的情况。 您是否期望 SimpleXMLRPCServer 将异常返回给客户端?
您只能使用可通过 XML 编组的对象。 这包括
__dict__
属性。Yes, this is what happens when you raise an exception on the server side. Are you expecting the SimpleXMLRPCServer to return the exception to the client?
You can only use objects that can be marshalled through XML. This includes
__dict__
attribute is transmitted.如果您引发这样的异常:
在服务器中,您在客户端中获得的异常的消息成员将与在以类型的字符串表示形式为前缀的原始异常上执行 str() 相同。
我得到的消息成员的结果是:
您当然可以解析它以获取您需要的信息。
If you raise an exception like this:
in the server the message member of the exception you get in the client will be the same as executing str() on the original exception prefixed with the string representation of the type.
The result I get for the message member is:
You could certainly parse this to get the information you need.