2011-04-13 85 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