2011-04-13 86 views
5

我想从Python代码中引发Suds.WebFault。方法\构造函数的__init__有三个参数__init__(self, fault, document)。故障具有fault.faultcode和fault.detail成员\属性\属性。我找不到什么类错误属于我尝试过的无光泽。如何从Python代码中引发Suds.WebFault类型异常?如何从python代码中引发Suds.WebFault?

在此先感谢。

+0

chrissygormley的答案适合我。如果它适合你,请勾选它。 – paragbaxi 2011-10-20 16:25:27

回答

6

不知道你在问什么,但你可以通过抛出一个网络故障:

import suds 

try: 
    client.service.Method(parameter) 
except suds.WebFault, e: 
    print e 
+1

根本不是什么问题。 – Jon 2015-01-26 10:20:10

+2

这实际上是你如何抓住'WebFault',而不是你如何扔/提出一个。 – 2016-02-19 11:09:45

2

WebFault此类在suds.__init__.py定义为:

class WebFault(Exception): 
    def __init__(self, fault, document): 
     if hasattr(fault, 'faultstring'): 
      Exception.__init__(self, u"Server raised fault: '%s'" % 
       fault.faultstring) 
     self.fault = fault 
     self.document = document 

因此提出一个WebFault此类具有有意义的消息将需要传递对象与该消息的第一个参数。除非需要,否则文档可以简单地为None

import suds 

class Fault(object): 
    faultstring = 'my error message' 

raise suds.WebFault(Fault(), document=None) 
+1

伟大的答案谢谢。作为参考,我需要在模拟系统中执行此操作来模拟通用服务器处理错误。 – 2017-10-03 05:05:58

+0

这应该被标记为答案。 – Sezen 2018-02-16 19:41:00