我想從Python代碼中引發Suds.WebFault。方法\構造函數的__init__
有三個參數__init__(self, fault, document)
。故障具有fault.faultcode和fault.detail成員\屬性\屬性。我找不到什麼類錯誤屬於我嘗試過的無光澤。如何從Python代碼中引發Suds.WebFault類型異常?如何從python代碼中引發Suds.WebFault?
在此先感謝。
我想從Python代碼中引發Suds.WebFault。方法\構造函數的__init__
有三個參數__init__(self, fault, document)
。故障具有fault.faultcode和fault.detail成員\屬性\屬性。我找不到什麼類錯誤屬於我嘗試過的無光澤。如何從Python代碼中引發Suds.WebFault類型異常?如何從python代碼中引發Suds.WebFault?
在此先感謝。
不知道你在問什麼,但你可以通過拋出一個網絡故障:
import suds
try:
client.service.Method(parameter)
except suds.WebFault, e:
print e
根本不是什麼問題。 – Jon 2015-01-26 10:20:10
這實際上是你如何抓住'WebFault',而不是你如何扔/提出一個。 – 2016-02-19 11:09:45
WebFault此類只是意味着當<Fault>
元素是由Web服務器返回給實際提高。所以自己提出這可能是個壞主意。
如果你仍然想,我會開始尋找框架引發它的代碼:https://github.com/unomena/suds/blob/4e90361e13fb3d74915eafc1f3a481400c798e0e/suds/bindings/binding.py#L182 - 並從那裏向後工作。
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)
偉大的答案謝謝。作爲參考,我需要在模擬系統中執行此操作來模擬通用服務器處理錯誤。 – 2017-10-03 05:05:58
這應該被標記爲答案。 – Sezen 2018-02-16 19:41:00
chrissygormley的答案適合我。如果它適合你,請勾選它。 – paragbaxi 2011-10-20 16:25:27