2011-04-13 21 views
5

मैं पाइथन कोड से एक Suds.WebFault बढ़ाने की कोशिश कर रहा हूँ। __init__ विधि \ निर्माता तीन तर्क __init__(self, fault, document) लेता है। गलती में गलती है। गलत कोड और गलती। विवरण सदस्यों \ गुण \ गुण। मुझे पता नहीं चला कि क्लास गलती किस मैट की कोशिश की है जो मैंने कोशिश की थी। मैं पाइथन कोड से Suds.WebFault प्रकार अपवाद कैसे बढ़ा सकता हूं?पाइथन कोड से Suds.WebFault कैसे बढ़ाएं?

अग्रिम धन्यवाद।

+0

chrissygormley द्वारा उत्तर मेरे लिए काम करता है। यदि यह आपके लिए काम करता है, तो कृपया इसे चेकमार्क करें। – paragbaxi

उत्तर

6

सुनिश्चित नहीं हैं कि वास्तव में क्या कह रहे हैं, लेकिन आप का उपयोग कर एक वेब गलती फेंक कर सकते हैं:

import suds 

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

बिलकुल भी नहीं पूछा जा रहा है। – Jon

+2

यह वास्तव में है कि आप 'वेबफॉल्ट' कैसे पकड़ते हैं, न कि आप कैसे फेंकते हैं/उठाते हैं। –

0

WebFault केवल वास्तव में उठाया जा करने के लिए जब एक <Fault> तत्व वेब सर्वर द्वारा दिया जाता है के लिए है। तो शायद यह खुद को उठाना एक बुरा विचार है।

यदि आप अभी भी करना चाहते हैं, तो मैं उस कोड को देखना शुरू कर दूंगा जहां ढांचा इसे उठाता है: https://github.com/unomena/suds/blob/4e90361e13fb3d74915eafc1f3a481400c798e0e/suds/bindings/binding.py#L182 - और वहां से पीछे की ओर काम करें।

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 बढ़ाने के लिए:

2

WebFault रूप suds.__init__.py में निर्धारित है। दस्तावेज़ आवश्यक होने तक None हो सकता है।

import suds 

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

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

ग्रेट उत्तर धन्यवाद। संदर्भ के लिए मुझे एक सामान्य सर्वर प्रोसेसिंग त्रुटि अनुकरण करने के लिए इसे नकली प्रणाली में करने की आवश्यकता है। –

+0

इसे उत्तर के रूप में चिह्नित किया जाना चाहिए। – Sezen