【发布时间】:2010-01-11 21:01:14
【问题描述】:
我正在尝试将任意异常从 XMLRPC 服务器传递到客户端(两个 Python 脚本,异常类型都在双方都定义)。 ActiveState Recipes 有一个示例客户端实现,它解析返回的“faultString”,将其与已知异常列表进行比较,如果发现,则引发该异常(而不是将其包装在 xmlrpclib.Fault 中)。
XMLRPC 异常响应示例:
<?xml version='1.0'?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>faultString</name>
<value>
<string>ValueError:</string>
</value>
</member>
</struct>
</value>
</fault>
</methodResponse>
ActiveState 配方拆分“ValueError:”字符串并将“ValueError”与ValueError.__name__(位于allowed_errors = [ValueError, TypeError],参见上面的链接)进行比较。
是否可以像这样传递所有异常,即在客户端(在服务器上引发之后)自动引发任何异常(从Exception或其他基类派生) ?
ActiveState 脚本有效,但我不想注册每个可能抛出的异常(必须在allowed_errors)。
(奖励问题:除了 XMLRPC 之外还有其他技术可以正确处理这个问题吗?Pyro?)
【问题讨论】: