【发布时间】:2020-07-31 17:45:41
【问题描述】:
这个问题底部的解答!
在我的情况下,我的客户端将数据发送到服务器以执行 CPU 密集型工作负载。我希望我的 XML-RPC 服务器能够在输入数据出现问题时引发异常。
我在服务器端尝试了一个简单的raise Exception('description of the error'),但在我的客户端上,我得到:xmlrpc.client.Fault: <Fault 1: "<class 'TypeError'>:exceptions must derive from BaseException">
在客户端,我希望能够做到以下几点:
try:
proxy.processData(data)
except:
[... code to handle the exception ...]
在服务器端:
def processData(data):
if 'somethingRequired' not in data:
raise Exception('Something Required not in data!')
[... continue processing ...]
我认为将异常设置为客户端的自定义类型也可能是理想的,这样由 XML-RPC 模块引起的异常(例如,无法连接到 XML-RPC 服务器)不会'不会被解释为数据输入错误。
谢谢!
更新:解决方案
在我的 processData 方法之上,我添加了以下内容(自定义异常):
class ProcessingError(Exception):
pass
然后,在我的客户端代码中,我使用以下内容进行错误处理::
try:
proxy.processData(data)
except xmlrpc.client.Fault as e:
print(e.faultString)
请注意,如果您想区分自定义异常和来自 XML-RPC 模块的异常(如连接错误),您可以解析 except: 块中的 str(e) 以检查您的异常是否在错误中或不是。我上面的代码中没有。
xmlrpc.client.Fault 类有一些属性可以在here 中找到。
【问题讨论】:
标签: python python-3.x xml-rpc