में एकाधिक अपवादों को एकत्रित करने और रिपोर्ट करने के लिए बेवकूफ तरीका पाइथन में एक बार में एकाधिक डेटा सत्यापन त्रुटियों को पकड़ने, लॉग करने और रिपोर्ट करने के लिए लोगों ने क्या उपयोग किया है?पाइथन
मैं पाइथन 3 में एक एप्लिकेशन बना रहा हूं जो पहले इनपुट डेटा को मान्य करता है और फिर इसे संसाधित करता है। पहले चरण में रिपोर्टिंग त्रुटियां प्रोग्राम की इच्छित कार्यक्षमता का हिस्सा हैं, इसलिए मैं नहीं चाहता कि मेरा सत्यापनकर्ता पहले अपवाद पर छोड़ दें। विशेष रूप से, डेटा टैब्यूलर होता है और मैं वापस लौटने में सक्षम होना चाहता हूं - बढ़ाने के बजाए - तालिका की प्रत्येक पंक्ति के लिए अपवाद जो मान्य नहीं है।
एक forum discussion from a couple of years ago निम्नलिखित, जो मेरे लिए साफ लगता है सहित कई समाधान, चिंतन:
errors = []
for item in data:
try:
process(item)
except ValidationError as e:
errors.append(e)
if errors:
raise MultipleValidationErrors(errors)
जहां MultipleValidationErrors
वर्ग एक उपयुक्त __str__
यह सभी ValidationErrors
बारे में उपयोगी जानकारी सूचीबद्ध करने के लिए विधि होगा।
अन्य traceback
मॉड्यूल का उपयोग करने की सलाह देते हैं, लेकिन चूंकि अपवाद जिन्हें मैं पकड़ना चाहता हूं, वे प्रोग्राम त्रुटियों के बजाय डेटा सत्यापन त्रुटियां हैं, जो अनुचित लगता है। logging
मॉड्यूल प्राप्त करना उचित हो सकता है, यद्यपि।
शायद [यह सवाल] (http://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block) – inspectorG4dget
@ इंस्पेक्टर G4dget में मदद करेगा: यह प्रश्न एकाधिक प्रकारों को पकड़ने के बारे में है अपवादों का; यह एक ही अपवाद प्रकार के कई उदाहरणों को पकड़ने के बारे में है। –
आपके द्वारा सूचीबद्ध कोड काम करेगा, अगर आप जो चाहते हैं वह करता है, या आप उल्लेख करते हैं कि आप अधिक जानकारी प्रदान करने के लिए ट्रेसबैक मॉड्यूल का उपयोग कर सकते हैं। वैकल्पिक रूप से आप अपवाद ऑब्जेक्ट को बाद में उपयोग के लिए डेटा संरचना में सहेज सकते हैं, या कई अन्य चीजें कर सकते हैं। यह सब इस बात पर निर्भर करता है कि अपवादों का जवाब देने के लिए आपकी आवश्यकताओं क्या हैं, जो आपके प्रश्न से स्पष्ट नहीं हैं। –